博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C++中int和string的转换
阅读量:4121 次
发布时间:2019-05-25

本文共 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;}

上面方法很简便, 缺点是处理大量数据转换速度较慢..

C library中的sprintf, sscanf 相对更快


可以用sprintf函数(使用snprintf函数会更加安全)将数字输出到一个字符缓冲区中. 从而进行了转换...

例如:

已知从0点开始的秒数(seconds) ,计算出字符串"H:M:S", 其中H是小时, M=分钟,S=秒


	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

你可能感兴趣的文章
浅谈HTML
查看>>
css基础
查看>>
HTML&CSS进阶
查看>>
Servlet进阶和JSP基础
查看>>
servlet中的cookie和session
查看>>
过滤器及JSP九大隐式对象
查看>>
软件(项目)的分层
查看>>
菜单树
查看>>
MySQL-分布式架构-MyCAT
查看>>
设计模式六大原则(6):开闭原则
查看>>
阿里面试总结--JAVA
查看>>
Servlet的生命周期
查看>>
JAVA八大经典书籍,你看过几本?
查看>>
《读书笔记》—–书单推荐
查看>>
【设计模式】—-(2)工厂方法模式(创建型)
查看>>
有return的情况下try catch finally的执行顺序(最有说服力的总结)
查看>>
String s1 = new String("abc"); String s2 = ("abc");
查看>>
JAVA数据类型
查看>>
Xshell 4 入门
查看>>
SoapUI-入门
查看>>