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的相互转换
最新推荐文章于 2024-05-21 17:15:49 发布