本文共 2060 字,大约阅读时间需要 6 分钟。
int snprintf(char *restrict buf, size_t n, const char * restrict format, ...);
函数说明:最多从源串中拷贝n-1个字符到目标串中,然后再在后面加一个0。所以如果目标串的大小为n 的话,将不会溢出。
函数返回值:若成功则返回欲写入的字符串长度,若出错则返回负值。
补充一下,snprintf的返回值是欲写入的字符串长度,而不是实际写入的字符串度。如:
char test[8];
int ret = snprintf(test,5,"1234567890");
printf("%d|%s/n",ret,test);
运行结果为:
10|1234
int 转换为 string
C++本身就提供了字符串与整型数之间的互换,那就是利用stringstream。下面是使用方法:
核心: 利用C++中的stringstream流。
由于使用过程比较简单就不再赘述,直接给出示例,重要的地方在示例注释中给予说明。
完整示例:
#include#include #include //要使用stringstream流应包含此头文件 using namespace std;int main() { stringstream stream; //声明一个stringstream变量 int n; string str;//string转int stream << "1234"; //向stream中插入字符串"1234" stream >> n; //从stream中提取刚插入的字符串"1234" 并将其赋予变量n完成字符串到int的转换 cout << n << endl; //输出n stream.clear(); //同一stream进行多次转换应调用成员函数clear//int转string
int tmp = 2345; stream << tmp; //向stream中插入整型数1234 stream >> str; //从steam中提取刚插入的整型数 并将其赋予变量str完成整型数到string的转换 cout << str << endl; //输出str return 0;}
int H, M, S; string time_str; H=seconds/3600; M=(seconds%3600)/60; S=(seconds%3600)%60; char ctime[10]; sprintf(ctime, "%d:%d:%d", H, M, S); // 将整数转换成字符串 time_str=ctime; // 结果
不要使用itoa将字符串转换为整数
char*itoa(int value,char*string,intradix);
虽然这样是可以的,但是,总感觉怪怪的
string str = ""; int tmp = 123; char ch[10] = {0}; str = itoa(tmp,ch,10);
string to int
使用strtol(string to long)
atoi
scanf:与sprintf对应的是sscanf函数, 可以将字符串转换成数字
char str[] = "15.455"; int i; float fp; sscanf( str, "%d", &i ); // 将字符串转换成整数 i = 15 sscanf( str, "%f", &fp ); // 将字符串转换成浮点数 fp = 15.455000 //打印 printf( "Integer: = %d ", i+1 ); printf( "Real: = %f ", fp+1 ); return 0;转自:http://www.douban.com/note/285042018/
http://www.cnblogs.com/nzbbody/p/3504199.html