C++ int类型转换string类型
2012-03-11 15:54
351 查看
C++中不像C#或Java中能直接使用字符串加法将 int类型转换为string类型。C++中进行这样的类型转换需要一些额外的函数。
一、C++的int转string
#方法一: 使用itoa函数: char * itoa ( int value, char * str, int base );
说明:Convert integer to string (non-standard function)
参数:
·value : Value to be converted to a string. ·str : Array in memory where to store the resulting null-terminated string. ·base : Numerical base used to represent the value as a string, between2 and36, where10 means decimal base,
16 hexadecimal,8 octal, and2 binary.
Demo:
输出结果:
#方法二: 使用sprintf: int sprintf ( char * str, const char * format, ... );
参数说明:
Demo:
输出结果:
#方法三:使用stringstream
Input/output string stream class: stringstream provides an interface to manipulate strings as if they were input/output streams.
![](http://hi.csdn.net/attachment/201203/11/0_1331454338rXq4.gif)
Demo:
输出结果:
#四、其他
1.sprintf可能引起缓冲区溢出,可以考虑使用 snprintf 或者非标准的 asprintf
2.如果是mfc程序,可以使用 CString::Format
3.如果使用boost,则可以直接使用: string s = boost::lexical_cast <string>(a);
4.atoi 也是不可移植的。
一、C++的int转string
#方法一: 使用itoa函数: char * itoa ( int value, char * str, int base );
说明:Convert integer to string (non-standard function)
参数:
·value : Value to be converted to a string. ·str : Array in memory where to store the resulting null-terminated string. ·base : Numerical base used to represent the value as a string, between2 and36, where10 means decimal base,
16 hexadecimal,8 octal, and2 binary.
Demo:
#include <iostream> using namespace std; int main(int argc, char* argv[]) { int n = 30; char c[10]; //二进制转换 itoa(n, c, 2); cout << "2-> " << c << endl; //十进制转换 itoa(n, c, 10); cout << "10-> " << c << endl; //十六进制转换 itoa(n, c, 16); cout << "16-> " << c << endl; system("pause"); return 0; }
输出结果:
2-> 11110 10-> 30 16-> 1e 请按任意键继续. . . |
参数说明:
% 印出百分比符号,不转换。 b 整数转成二进位。 c 整数转成对应的 ASCII 字元。 d 整数转成十进位。 f 倍精确度数字转成浮点数。 o 整数转成八进位。 s 整数转成字串。 x 整数转成小写十六进位。 X 整数转成大写十六进位。 |
#include <iostream> #include <string> using namespace std; int main() { int n = 30; char c[20]; //char *c; //%d十进制 sprintf(c, "%d", n); cout << c << endl; //%o八进制 sprintf(c, "%o", n); cout << c << endl; //%X大写十六进制 sprintf(c, "%X", n); cout << c << endl; //%cACSII字元 sprintf(c, "%c", n); cout << c << endl; //%f浮点数转换 float f = 24.678; sprintf(c, "%f", f); cout << c << endl; //%.2f"保留小数点后面两位 sprintf(c, "%.2f", f); cout << c << endl; //转换两个数 sprintf(c, "%d-%.2f", n, f); cout << c << endl; system("pause"); return 0; }
输出结果:
30 36 1E //注:这里是个特殊符号 24.677999 24.68 30-24.68 请按任意键继续. . . |
Input/output string stream class: stringstream provides an interface to manipulate strings as if they were input/output streams.
![](http://hi.csdn.net/attachment/201203/11/0_1331454338rXq4.gif)
Demo:
#include <iostream> #include <string> #include <sstream> //引入stringstream头文件 using namespace std; int main() { stringstream strStream; int a = 100; float f = 23.5566; //int、float类型都可以塞到stringstream中 strStream << a << "----"<< f ; string s = strStream.str(); cout << s << endl; system("pause"); return 0; }
输出结果:
100----23.5566 请按任意键继续. . . |
1.sprintf可能引起缓冲区溢出,可以考虑使用 snprintf 或者非标准的 asprintf
2.如果是mfc程序,可以使用 CString::Format
3.如果使用boost,则可以直接使用: string s = boost::lexical_cast <string>(a);
4.atoi 也是不可移植的。
相关文章推荐
- MFC/C++/C中字符类型CString, int, string, char*之间的转换
- C++ 中int 和string 的类型转换
- 关于C++中string对象向int、float、double类型的转换的方法汇总
- C++中将string类型转换为int, float, double类型 主要通过以下几种方式:
- C++ - string类型转换int类型
- c++中的一些类型转换 : CString,string,int ,long,double,char*,const char*,date等
- C++中int和string类型的相互转换
- C++int类型与string类型相互转换
- C++中int类型转换成string类型的方法
- c++中的一些类型转换 : CString,string,int ,long,double,char*,const char*,date等
- C++ int类型转换string类型
- C++ int,char,string,CString类型转换 [转]
- MFC/C++/C中字符类型CString, int, string, char*之间的转换
- C++中将string类型转换为int, float, double类型 主要通过以下几种方式:
- C++ int,char,string,CString类型转换 [转]
- MFC/C++/C中字符类型CString, int, string, char*之间的转换
- leetcode 8: String to Integer (C++中int、string等常见类型转换)
- string, char*, int类型转换 , c++强制转化
- C++中 int、string等类型转换方法
- C++中将string类型转换为int, float, double互转