C++中int和string的转换

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 <iostream>
#include <string>
#include <sstream>      //要使用stringstream流应包含此头文件 
using namespace std;
int main() {
<span style="white-space:pre">	</span>stringstream stream;     //声明一个stringstream变量
<span style="white-space:pre">	</span>int n;
<span style="white-space:pre">	</span>string str;
//string转int
<span style="white-space:pre">	</span>stream << "1234";     //向stream中插入字符串"1234"
<span style="white-space:pre">	</span>stream >> n;     //从stream中提取刚插入的字符串"1234"  并将其赋予变量n完成字符串到int的转换
<span style="white-space:pre">	</span>cout << n << endl;     //输出n
<span style="white-space:pre">	</span>stream.clear();     //同一stream进行多次转换应调用成员函数clear
//int转string
<span style="white-space:pre">	</span>int tmp = 2345;
<span style="white-space:pre">	</span>stream << tmp;     //向stream中插入整型数1234
<span style="white-space:pre">	</span>stream >> str;     //从steam中提取刚插入的整型数   并将其赋予变量str完成整型数到string的转换
<span style="white-space:pre">	</span>cout << str << endl;     //输出str
<span style="white-space:pre">	</span>return 0;
}

上面方法很简便, 缺点是处理大量数据转换速度较慢..
C library中的sprintf, sscanf 相对更快

可以用sprintf函数(使用snprintf函数会更加安全)将数字输出到一个字符缓冲区中. 从而进行了转换...
例如:
已知从0点开始的秒数(seconds) ,计算出字符串"H:M:S", 其中H是小时, M=分钟,S=秒

<span style="white-space:pre">	</span>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


C++中,将整数(`int`类型)转换字符串(`string`类型)有多种方法,以下是几种常见且实用的实现方式。 ### 使用 `to_string()` 函数 `std::to_string()` 是 C++11 标准引入的一个便捷函数,可以直接将整型、浮点型等数值转换字符串类型。该函数使用简单,代码可读性强。 示例代码如下: ```cpp #include <iostream> #include <string> int main() { int i = 10; std::string str = std::to_string(i); std::cout << "int_str: " + str << std::endl; return 0; } ``` 此方法适用于现代 C++ 编程环境,并推荐用于需要简洁表达式的场景[^1]。 --- ### 使用 `stringstream` 通过 `<sstream>` 头文件中的 `std::stringstream` 类,可以利用流操作完成 `int` 到 `string` 的转换。这种方法兼容性好,适合于旧版本编译器或复杂格式化需求。 示例代码如下: ```cpp #include <bits/stdc++.h> using namespace std; int main() { int age = 20; stringstream ss; ss << age; string s2; ss >> s2; cout << s2 << endl; return 0; } ``` 该方法支持更复杂的输入输出格式控制,适用于需要灵活处理数据类型的场景[^3]。 --- ### 使用 `atoi()` `c_str()`(从字符串到整数) 虽然 `atoi()` 主要用于将字符串转换为整数,但为了完整性提及于此。若需反向转换,可结合上述方法使用。 示例代码如下: ```cpp #include <iostream> using namespace std; int main() { string str = "10"; int x = atoi(str.c_str()); cout << x << endl; return 0; } ``` 注意:此方法仅适用于字符串到整数的转换,不适用于整数到字符串转换[^2]。 --- ### 总结 对于将整数转换字符串的需求,推荐优先使用 `std::to_string()` 或 `std::stringstream` 方法。两者各有优势,具体选择应根据项目使用的 C++ 版本实际需求决定。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值