您的位置:首页 > 编程语言 > C语言/C++

C++中int与string的相互转换

2015-03-21 22:59 447 查看
itoa()
strtol()


itoa()将int转化成char* 类型,注意这并不能将int转化成string,而是将char*并且这并不是一个标准的C函数,他是在Windows下的函数。

strtol()将string类型转换成long型,一开始strtol()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负符号才开始做转换,再遇到非数字或字符串结束时(‘\0’)结束转换,并将结果返回。若参数endptr不为NULL,则会将遇到不合条件而终止的nptr中的字符指针由endptr返回;若参数endptr为NULL,则会不返回非法字符串。

// char* itoa(int value, char* string, int radix);
// long int strtol(const char* nptr, char** endptr,int base);

int aa = 30;
char c[8];
itoa(aa,c,16);
cout << c << endl;      // 1e

string s = "17";
long num = strtol(s.c_str(), NULL, 10);
cout << num << end;     // 17


sprintf()
sscanf()


sprintf()将要转化的其他的类型利用sprintf函数格式化式的输出到buffer缓冲区中。

sscanf()从一个字符串buffer中读进与指定格式相符的数据,具体用法见百度百科

// int sprintf( char *buffer, const char *format, [ argument] … );
// int sscanf(const char *buffer,const char *format,[argument ]...);

int aa = 30;
char c[8];
int length = sprintf(c, "%05X", aa);
cout<< c << endl;           // 0001E

sscanf("17","%d",&aa);
cout << aa << endl;     // 17


stringstream/ostringstream
stringstream/istringstream


sstream头文件定义了三个类型来支持内存IO(istringstream, ostringstream,stringstream),这些类型可以向string写入数据,可以从string中读取数据,就像string是IO流一样。

istringstream从string中读取数据,一般使用 >>符号,将string中像控制台似的输出数据

ostringstream将数据写入string中,一般使用 <<符号,将其他类型的数据输入string中

stringstream则是以上两种只和,既可以读入也可以写入。

#include <sstream>

int aa = 30;

stringstream stra;
stra << aa;
cout << stra.str() << endl;         // 30

ostringstream strb;
strb << aa;
cout << strb.str() << endl;         // 30

stringstream straa("17");
straa >> aa;
cout << aa << endl;                 // 17

istringstream strbb("17");
strbb >> aa;
cout << aa << endl;                 // 17


参考资料

C++ int与string的转化 /article/4998214.html

http://baike.baidu.com/view/1364018.htm
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: