实战c++中的string系列--string与整型或浮点型互转

原文链接:点击打开链接

教科书中很少会提到string与int或是float的相互转换,但是在实际工程中会经常遇到,尤其在做UI控件显示的时候。比如说你要在edit控件中显示一个数值,那你就需要把这个数值首先转为string,然后再将这个string付给edit控件。

网上你会找到很多的转换方法,个人觉得效率差不多的情况下,简洁最好。

这里主要用到的是stringstreams

stringstream 是 C++ 提供的另一个字串型的串流(stream)物件,和之前学过的 iostream、fstream 有类似的操作方式。要使用 stringstream, 必須先加入這一行:

#include <sstream>
stringstream 主要是用在將一個字串分割,可以先用 clear( )以及 str( ) 將指定字串設定成一开始的內容,再用 >> 把个別的资料输出,例如:
string s;
stringstream ss;
int a, b, c;
getline(cin, s);
ss.clear();
ss.str(s);
ss >> a >> b >> c;

下面就言归正传。 
1、stringstreams中number to string  
主要是两步走: 
把number输出到stream 
从stream中得到string
int Number = 123;       
string Result;        
ostringstream convert;   
convert << Number;     
Result = convert.str(); 

可以将上述代码缩略成一句话:
int Number = 123;
string String = static_cast<ostringstream*>( &(ostringstream() << Number) )->str();

这里需要说明的是,number不限于int,float一样可以工作

2、stringstreams中string to number 
同样需要两步走: 
根据string构造一个stream 
将value 读到变量中

string Text = "456"; 
int Result;          
istringstream convert(Text); 

if ( !(convert >> Result) ) 
{
    Result = 0;             //if that fails set 'Result' to 0
}
同样,也可以对上面的代码进行简化:

string Text = "456";
int Number;
if ( ! (istringstream(Text) >> Number) ) Number = 0;

3、C++11中number string互转 
C++11为我们提供了更为便利的方法:

整型、浮点型转string 
std::to_string 
重载如下: 
string to_string (int val); 
string to_string (long val); 
string to_string (long long val); 
string to_string (unsigned val); 
string to_string (unsigned long val); 
string to_string (unsigned long long val); 
string to_string (float val); 
string to_string (double val); 
string to_string (long double val);

字符串转整型: 
stoi, stol, stoll

字符串转浮点型: 
stof, stod, stold

int number = 123;
string text = to_string(number);

text = "456"
number = stoi(number);
4、C - stdio中的string与number转换  
Number to String

int Number = 123; 
char Result[16]; 
sprintf ( Result, "%d", Number ); 
String to Number
char Text[] = "456"; 
int Result; 
sscanf ( Text, "%d", &Result );
5、C - stdlib中的string与number转换  
itoa 
atoi 
atol 
atof 
strtol 
strtoul 
strtod 
但需要注意的是,上面的几个函数并非标准,尽量少用。






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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值