数值和字符串互相转换-阿里云开发者社区

开发者社区> 云计算> 正文

数值和字符串互相转换

简介:
  今天看书看到了strintstream,感觉用起来很方便,尤其是将数值转换为字符串的时候使用stringstream,可以达到非常美妙的效果。对比前面我的一篇文章--如何将数字转换为字符串,使用#的方法,使用stringstream也是一种很好的选择。
  废话不多说,直接看代码吧。
  main.cpp文件:
InBlock.gif#include <iostream>
InBlock.gif#include <sstream>
InBlock.gifusing namespace std;
InBlock.gif
  int main()
InBlock.gif{
InBlock.gif  stringstream ss;    //流输出
InBlock.gif  ss << "there are " << 100 << " students.";
InBlock.gif  cout << ss.str() << endl;
InBlock.gif
  int intNumber = 10;    //int型
InBlock.gif  ss.str("");
InBlock.gif  ss << intNumber;
InBlock.gif  cout << ss.str() << endl;
InBlock.gif
  float floatNumber = 3.14159f;  //float型
InBlock.gif  ss.str("");
InBlock.gif  ss << floatNumber;
InBlock.gif  cout << ss.str() << endl;
InBlock.gif
  int hexNumber = 16;        //16进制形式转换为字符串
InBlock.gif  ss.str("");
InBlock.gif  ss << showbase << hex << hexNumber;
InBlock.gif  cout << ss.str() << endl;
InBlock.gif  return 0;
InBlock.gif}
  输出结果如下:
there are 100 students.
10
3.14159
0x10
  可以看出使用stringstream比较使用#的好处是可以格式化数字,以多种形式(比如十六进制)格式化,代码也比较简单、清晰。

  同样,可以使用stringstream将字符串转换为数值:
InBlock.gif#include <iostream>
InBlock.gif#include <sstream>
InBlock.gifusing namespace std;
InBlock.gif
  template<class T>
InBlock.gifT strToNum(const string& str)  //字符串转换为数值函数
InBlock.gif{
InBlock.gif  stringstream ss(str);
InBlock.gif  T temp;
InBlock.gif  ss >> temp;
InBlock.gif  if ( ss.fail() ) {
InBlock.gif    string excep = "Unable to format ";
InBlock.gif    excep += str;
InBlock.gif    throw (excep);
InBlock.gif  }
InBlock.gif  return temp;
InBlock.gif}

InBlock.gifint main()
InBlock.gif{
InBlock.gif  try {
InBlock.gif    string toBeFormat = "7";
InBlock.gif    int num1 = strToNum<int>(toBeFormat);
InBlock.gif    cout << num1 << endl;
InBlock.gif
    toBeFormat = "3.14159";
InBlock.gif    double num2 = strToNum<double>(toBeFormat);
InBlock.gif    cout << num2 << endl;
InBlock.gif
    toBeFormat = "abc";
InBlock.gif    int num3 = strToNum<int>(toBeFormat);
InBlock.gif    cout << num3 << endl;
InBlock.gif  }
InBlock.gif  catch (string& e) {
InBlock.gif    cerr << "exception:" << e << endl;
InBlock.gif  }
InBlock.gif  return 0;
InBlock.gif}

  这样就解决了我们在程序中经常遇到的字符串到数值的转换问题。





     本文转自panpan3210 51CTO博客,原文链接:http://blog.51cto.com/panpan/107732,如需转载请自行联系原作者


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
云计算
使用钉钉扫一扫加入圈子
+ 订阅

时时分享云计算技术内容,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。

其他文章