【整理】C++ string转int,string转double,string转long,int转string,double转string…

原创文章,转载请注明: 转载自勤奋的小青蛙
本文链接地址: 【整理】C++ string转int,string转double,string转long,int转string,double转string…

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

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

...)。

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

基于C++11标准

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

标准库中定义了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
  2. template
  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


你可能感兴趣的:(小窍门)