C++ int类型转换string类型

C++中不像C#或Java中能直接使用字符串加法将 int类型转换为string类型。C++中进行这样的类型转换需要一些额外的函数。

一、C++的int转string

 #方法一: 使用itoa函数:    char *  itoa ( int value, char * str, int base );                            

说明:Convert integer to string (non-standard function)

参数:

·value : Value to be converted to a string. ·str : Array in memory where to store the resulting null-terminated string. ·base : Numerical base used to represent the value as a string, between 2 and 36, where 10 means decimal base, 16 hexadecimal, 8 octal, and 2 binary.

Demo:

#include <iostream> 
using namespace std; 
int main(int argc, char* argv[])  
{    
	int n = 30; 
	char c[10];   
	//二进制转换
	itoa(n, c, 2);  
	cout << "2-> " << c << endl; 
	//十进制转换
	itoa(n, c, 10);    
	cout << "10-> " <<  c << endl;
	//十六进制转换
	itoa(n, c, 16);     
	cout << "16-> " <<  c << endl; 

	system("pause");     
	return 0;  
}

输出结果:

2-> 11110  
10-> 30  
16-> 1e  
请按任意键继续. . .

  #方法二: 使用sprintf:   int sprintf ( char * str, const char * format, ... );

参数说明:

% 印出百分比符号,不转换。

b 整数转成二进位。

c 整数转成对应的 ASCII 字元。

d 整数转成十进位。

f 倍精确度数字转成浮点数。

o 整数转成八进位。

s 整数转成字串。

x 整数转成小写十六进位。

X 整数转成大写十六进位。

Demo:

#include <iostream>
#include <string>
using namespace std;  
int main() 
{     
	int n = 30; 
	char c[20];     //char *c;
	//%d十进制
	sprintf(c, "%d", n);   
	cout << c << endl;    
	//%o八进制
	sprintf(c, "%o", n);   
	cout << c << endl;   
	//%X大写十六进制
	sprintf(c, "%X", n);   
	cout << c << endl;  
	//%cACSII字元
	sprintf(c, "%c", n);   
	cout << c << endl;  
	
	//%f浮点数转换
	float f = 24.678;    
	sprintf(c, "%f", f); 
	cout << c << endl;   
	//%.2f"保留小数点后面两位
	sprintf(c, "%.2f", f);    
	cout << c << endl;  
	//转换两个数
	sprintf(c, "%d-%.2f", n, f);  
	cout << c << endl;  

	system("pause");    
	return 0;  
}  

输出结果:

30  
36  
1E  
//注:这里是个特殊符号  
24.677999  
24.68  
30-24.68  
请按任意键继续. . .
   #方法三:使用stringstream

Input/output string stream class: stringstream provides an interface to manipulate strings as if they were input/output streams.

 

Demo:

#include <iostream> 
#include <string>
#include <sstream>	//引入stringstream头文件
using namespace std; 
int main() 
{     
	stringstream strStream;  
	int a = 100;  
	float f = 23.5566; 
	//int、float类型都可以塞到stringstream中
	strStream << a << "----"<< f ; 
	string s = strStream.str();  
	cout << s << endl;  

	system("pause");    
	return 0;  
}

输出结果:

100----23.5566  
请按任意键继续. . .

  #四、其他

1.sprintf可能引起缓冲区溢出,可以考虑使用 snprintf 或者非标准的 asprintf

2.如果是mfc程序,可以使用 CString::Format

3.如果使用boost,则可以直接使用: string s = boost::lexical_cast <string>(a);

4.atoi 也是不可移植的。

 

 

  • 13
    点赞
  • 54
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值