精华内容
下载资源
问答
  • c++ string转int, doubleint,double转string

    千次阅读 2019-07-02 11:56:25
    c++ string与常用数值变量互转 写了几个字符串与数值变量互相转换的几个函数,每次用到都要上网查一堆,耽误时间,写好放到这里备用。方法有很多,这里列出来测试过能用的,其他方法慢慢添加。...2. int转...

    c++ string与常用数值变量互转

    写了几个字符串与数值变量互相转换的几个函数,每次用到都要上网查一堆,耽误时间,写好放到这里备用。方法有很多,这里列出来测试过能用的,其他方法慢慢添加。以下函数自动判断int或者double。

    测试环境:

    • 系统:win7或者win10
    • IDE:vs2015

    本文包含的内容:

    c++ string与常用数值变量互转

    1. 头文件

    2. int转string

    3. double转string

    4. string转int

    5. string转double

    6. 测试

    7. 其他方法std::to_string


    1. 头文件

    请留意包含的头文件,以及命名空间。可以先加上如下代码,在使用本文的几个转换函数。

    #include <string>
    #include <sstream>
    
    using namespace std;

    2. int转string

    void num2string(int num, string &str)
    {
    	stringstream ss;
    	ss << num;
    	str = ss.str();
    }

    3. double转string

    void num2string(double num, string &str)
    {
    	stringstream ss;
    	ss << num;
    	str = ss.str();
    }

    4. string转int

    void string2num(string str, int &num)
    {
    	stringstream ss;
    	ss << str;
    	ss >> num;
    }

    5. string转double

    void string2num(string str, double &num)
    {
    	stringstream ss;
    	ss << str;
    	ss >> num;
    }

    6. 测试

    // string2num_num2string.cpp : 定义控制台应用程序的入口点。
    //
    
    #include "stdafx.h"
    #include <string>
    #include <sstream>
    #include <iostream>
    
    using namespace std;
    
    void num2string(int num, string &str)
    {
    	stringstream ss;
    	ss << num;
    	str = ss.str();
    }
    
    void num2string(double num, string &str)
    {
    	stringstream ss;
    	ss << num;
    	str = ss.str();
    }
    
    void string2num(string str, int &num)
    {
    	stringstream ss;
    	ss << str;
    	ss >> num;
    }
    
    void string2num(string str, double &num)
    {
    	stringstream ss;
    	ss << str;
    	ss >> num;
    }
    
    int main()
    {
    	int    i = 10;
    	double d = 10.5;
    
    	// 数值转string
    	string str_i;
    	string str_d;
    	num2string(i, str_i);
    	num2string(d, str_d);
    	cout << "str_i = " << str_i << endl;
    	cout << "str_d = " << str_d << endl;
    
    	// string转数值
    	int x;
    	double y;
    	string2num(str_i, x);
    	string2num(str_d, y);
    	cout << "x = " << x << endl;
    	cout << "y = " << y << endl;
    
    	system("pause");
            return 0;
    }

    运行结果

    7. 其他方法std::to_string

    c++11标准增加了全局函数std::to_string用于将数值类型变量转换为string类型变量,也可直接使用。

    string to_string (int val);
    string to_string (long val);
    string to_string (long long val);
    string to_string (unsigned val);
    string to_string (unsigned long val);
    string to_string (unsigned long long val);
    string to_string (float val);
    string to_string (double val);
    string to_string (long double val);


     

    本文更新地址:https://blog.csdn.net/iracer/article/details/94435586


    新书终于面市啦,《机器学习原理与编程实战》连接原理与实战:

    https://blog.csdn.net/iracer/article/details/116051674?spm=1001.2014.3001.5501

     

    展开全文
  • 【整理】C++ string转int,string转double,string转long,int转string,double转string… C++开发中,经常遇到各种基本类型与string的转换,掌握本博文,便可以轻松应对C++各基本类型与string的转换(比如: int...

    C++开发中,经常遇到各种基本类型与string的转换,掌握本博文,便可以轻松应对C++各基本类型与string的转换(比如:

    int转string,double转string,long转string,string转int,string转double,string转long

    ...)。

    第一种:基于C++ 11标准:

    基于C++11标准

    如果你用的编译器是基于最新的C++11标准,那么这个问题就变的很简单,因为<string>中已经封装好了对应的转换方法:

    标准库中定义了to_string(val);可以将其它类型转换为string。还定义了一组stoi(s,p,b)、stol(s,p,b)、stod(s,p,b)等转换函数,可以函数,可以分别转化成int、long、double等.

       stoi(s,p,b);stol(s,p,b);stoul(s,p,b);stoll(s,p,b);stoull(s,p,b); 返回s的起始子串(表示整数内容的字符串)的数值,返回值的类型分别为:int、long、unsigned long、long long、unsigned long long.其中b表示转换所用的基数,默认为10(表示十进制).p是size_t的指针,用来保存s中第一个非数值字符的下标,p默认为0,即函数不返 回下标.

       stof(s, p); stod(s, p); stold(s, p); 返回s的起始子串(表示浮点数内容)的数值,返回值的类型分别是float、double、long double.参数p的作用与整数转换函数中的一样。

    1. voidtestTypeConvert()
    2. {
    3. //int --> string
    4. inti = 5;
    5. string s = to_string(i);
    6. cout << s << endl;
    7. //double --> string
    8. doubled = 3.14;
    9. cout << to_string(d) << endl;
    10. //long --> string
    11. longl = 123234567;
    12. cout << to_string(l) << endl;
    13. //char --> string
    14. charc = 'a';
    15. cout << to_string(c) << endl; //自动转换成int类型的参数
    16. //char --> string
    17. string cStr; cStr += c;
    18. cout << cStr << endl;
    19. s = "123.257";
    20. //string --> int;
    21. cout << stoi(s) << endl;
    22. //string --> int
    23. cout << stol(s) << endl;
    24. //string --> float
    25. cout << stof(s) << endl;
    26. //string --> doubel
    27. cout << stod(s) << endl;
    28. }


    第一种方法记得编译的时候加上支持C++ 11的参数:-std=c++0x

    输出结果:

    1. 5
    2. 3.140000
    3. 123234567
    4. 97
    5. a
    6. 123
    7. 123
    8. 123.257
    9. 123.257


    第二种:C++ 11标准之前:

    C++11标准之前

    C++11标准之前没有提供相应的方法可以调用,就得自己写转换方法了,代码如下:

    从其它类型转换为string,定义一个模板类的方法。

    从string转换为其它类型,定义多个重载函数。

    1. #include <strstream>
    2. template<classT>
    3. string convertToString(constT val)
    4. {
    5. string s;
    6. std::strstream ss;
    7. ss << val;
    8. ss >> s;
    9. returns;
    10. }
    11. intconvertStringToInt(conststring &s)
    12. {
    13. intval;
    14. std::strstream ss;
    15. ss << s;
    16. ss >> val;
    17. returnval;
    18. }
    19. doubleconvertStringToDouble(conststring &s)
    20. {
    21. doubleval;
    22. std::strstream ss;
    23. ss << s;
    24. ss >> val;
    25. returnval;
    26. }
    27. longconvertStringToLong(conststring &s)
    28. {
    29. longval;
    30. std::strstream ss;
    31. ss << s;
    32. ss >> val;
    33. returnval;
    34. }
    35. voidtestConvert()
    36. {
    37. //convert other type to string
    38. cout << "convert other type to string:" << endl;
    39. string s = convertToString(44.5);
    40. cout << s << endl;
    41. intii = 125;
    42. cout << convertToString(ii) << endl;
    43. doubledd = 3.1415926;
    44. cout << convertToString(dd) << endl;
    45. //convert from string to other type
    46. cout << "convert from string to other type:" << endl;
    47. inti = convertStringToInt("12.5");
    48. cout << i << endl;
    49. doubled = convertStringToDouble("12.5");
    50. cout << d << endl;
    51. longl = convertStringToLong("1234567");
    52. cout << l << endl;
    53. }


    结果如下:

    1. convert other type to string:
    2. 44.5
    3. 125
    4. 3.14159
    5. convert from string to other type:
    6. 12
    7. 12.5
    8. 1234567


    展开全文
  • 今天在计算数据的时候,我用c++算数的时候出现了点问题,如下图,就是double 类型的d取值为1,然后N为整型20,densityC为宏定义的0.5, 结果算出来1.0\*20\*0.5得出数值为9???这计算机不拿我当人呢,请问大佬们...
  • double转int

    万次阅读 2019-01-24 09:29:03
    关于double转int类型,在本来的认知中,以为任何情况强转可以搞定一切,但在实际应用时发现不然,需求是需要从excel表中读出xx.xx这样的数字信息,且需要在此数值*100后作为查询条件去db查询,这就需要精确性了,...

    关于double转int类型,在本来的认知中,以为任何情况强转可以搞定一切,但在实际应用时发现不然,需求是需要从excel表中读出xx.xx这样的数字信息,且需要在此数值*100后作为查询条件去db查询,这就需要精确性了,对于基础小白来讲,还是做个笔记记下吧,先看强转的例子:

            Double a = 2.3 * 100;
            int i = new Double(a).intValue();
            System.out.println(i);

    输出结果:229

    ok,很明显不是我们要的结果,从上面可以看出,在转换时发生了精度丢失问题,转为int类型会把后面的小数点全部砍掉,不同数据类型转换过程中会有这个问题,原因是计算机是2进制的,针对这种情况的控制方法可以使用DecimalFormat来解决:

    new DecimalFormat("0").format(a)

    返回的是String类型,控制台输出:230,具体需要保留几位可以通过DecimalFormat来进行设置。

    展开全文
  • c++ char*转int double

    千次阅读 2018-08-31 22:08:21
    正负皆可;靠自己勤劳的双手与智慧...上代码,可以转载。...double sqrt(double sum,int i) { double root = sum; while (i>0,i--) sum *= root; return sum; } double hexToDec(char *str) { i...

    正负皆可转;靠自己勤劳的双手与智慧...上代码,可以转载。有好的逻辑请留言,万般感谢!

    double sqrt(double sum,int i)
    { 
        double root = sum;
        while (i>0,i--)
            sum *= root;
    
        return sum;
    }
    
    double hexToDec(char *str)
    {
        int i = 0;
        float sumd = 0.0;
        double sumf = 0.0;
        bool error = false;
        bool negative = false;
    
        for (; *str; str++) {
    
            if (*str == '-') {
                negative = true;
                continue;
            }
            if (*str == '.') {
                error = true;
                continue;
            }
    
            if (error)
            {
                sumf = sumf + (*str - '0')/sqrt(10.0,i);
                i++;
            }
            else {
                sumd = 10.0 * sumd + (*str - '0');
            }
        }
    
        if (negative)
            sumd = -(sumd + sumf);
        else 
            sumd += sumf;
    
        return sumd;
    }

    原生的函数

    数字字符串互转

     

    展开全文
  • MFC/C/C++ CString int\double\long\long long

    千次阅读 2016-06-17 09:05:35
    MFC CString转intdouble、char类型//CString转int CString cstr_int = L"12345"; int result_int = _ttoi(cstr_int); //CString转double CString cstr_double = L"123.45"; double result_double = _ttof(cstr...
  • C++中string转doubleint

    万次阅读 2019-03-07 19:40:20
    以下是string转double的方法 #include &lt;iostream&gt; #include &lt;string&gt; #include &lt;cstdlib&gt; using namespace std; int main() { string s; cin &gt;&gt; s; ...
  • double转int类型会丢失精度,今天我们就回答为什么会丢失精度,以及最好的解决方案.
  • double转int问题

    千次阅读 2018-09-03 16:15:34
    一、代码实现 ... public class TTTT { public static void main(String[] args) { double d =1.76; System.out.println((int)d); double f =1.16; System.out.println((int)f); } ...
  • c++doubleint的问题

    2017-11-25 08:09:47
    代码如下 为什么当x为0.7时y为0?? ``` double x = 0.7; int y = (x - 0.5) / 0.2; ```
  • C++ int float double string

    千次阅读 2018-02-28 11:48:43
    std命令空间下有一个C++标准库函数std::to_string(),可用于将数值类型转换为string。使用时需要include头文件&lt;string&gt;。#include &lt;string&...//X可以使int float double 等类型...
  • double转int精度丢失问题

    千次阅读 2015-05-10 18:19:45
    在做学校的acm题时遇到这么一个问题,多余部分已省去,问题部分为: 输入正整数n,取2的n次方的最高位。 由M=2^n,两边取以10为底的对数,logM=nlog2=y ...则pow(10,y的小数部分)即为所求...int high(long long int
  • C++ float转换int,四舍五入

    万次阅读 2015-04-02 18:01:06
    正常的float 转换为 int 的情况是采用去尾巴的方式,也就是说去掉小数点后面的数值。 1. 常规的float 转换为 int : 例如: 9.34 = (int) 9 ; 9.99 = (int) 9 。 #include int main() { float i = 9.34; ...
  • C++ vector 中 doubleint8_t 转化

    千次阅读 2019-12-12 16:30:03
    double> 转化为 vector<int8_t> void EncodeDouble(const std::vector<double>& data, std::vector<int8_t>& result) { const double *dataPtr = data.data(); ui...
  • #include <iostream> #include <string> //string #include <iomanip> //fixed and setprecision #include <sstream> //stringstream using namespace std;...int main() { //doub...
  • #include <iostream>...std::string doubleToString(const double &val) { char* chCode; chCode = new char[20]; sprintf(chCode, "%.2lf", val); std::string str(chCode); delete[]chCode
  • 1.字符串转intdouble,  char str[] = "15.455";  double db;  int i;  db = atof(str); // db = 15.455  i = atoi(str); // i = 15 2.intdouble转char str[ ] int i; double db; char str1
  • C++ - string类型转换int类型

    万次阅读 多人点赞 2014-06-08 20:16:24
    string类型转换int类型本文地址: http://blog.csdn.net/caroline_wendyC语言转换形式:... ......C++转换形式(C++11):... std::string str; int i = std::stoi(str); ...同样, 可以使用 stol(long), s
  • 1、std:to_string()方法... double d = 3.1415926535897932384; std::string str = std::to_string(d); std::cout << str << std::endl; // 3.141593 2、使用stringstream,在输入流时使用setprec...
  • C++intdouble与string的相互转换

    万次阅读 2018-07-26 19:44:39
    一、int转string 1.c++11标准增加了全局函数std::to_string: string to_string (int val); string to_string (long val); string to_string (long long val); string to_string (unsigned val); string to_...
  • C++string与int的相互转换(使用C++11)

    万次阅读 多人点赞 2018-09-16 08:08:26
    一、int转string #include &lt;iostream&gt; #include &lt;string&gt; int main() { double f = 23.43; double f2 = 1e-9; double f3 = 1e40; double f4 = 1e-40; double f5 = ...
  • template&lt;typename T&gt; static T bytes2T(unsigned char *bytes) ... int n = sizeof(T);  memcpy(&amp;res, bytes, n);  return res; } template&lt;typename T&gt; static unsigned c...
  • c语言中double转int的舍入误差

    千次阅读 2010-09-25 23:01:00
    在C语言中,从double类型转换为int会出现舍入误差,从而导致结果错误,如下面的代码,判断n是否为“水仙花数”,当n=153时,在本机运行发生错误。调试得知,pow(remainder, i)在remainder = 5, i = 3时,得到temp为...
  • 定义了一个int变量B=90;直接用%d输出 int(B * 0.3) 输出来是26... ![图片说明](https://img-ask.csdn.net/upload/201711/12/1510443354_950261.png) 但是换一种方法就输出27了: ![图片说明]...
  • 1、int string sprintf int a = 1; char strDst[256] = {0}; sprintf_s(strDst,256,"%d",a); itoa int a = 1; char strDst[256] = {0}; // 10代表使用十进制协议,默认使用十六进制 itoa(strDst,i,10); 2、...
  • c++中,为了要输出,大部分情况都需要把一些零散的数据和字符组合成字符串统一输出,这里就记录下学习到的一个简单好用的方法,以后要用时方便寻找。
  • c++int转string

    千次阅读 2018-08-17 11:21:59
    一、int转string 1.c++11标准增加了全局函数std::to_string: string to_string (int val); string to_string (long val); string to_string (long long val); string to_string (unsigned val); string to_...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 315,091
精华内容 126,036
关键字:

c++double转int

c++ 订阅