C++数值与字符串转换

匿名 (未验证) 提交于 2019-12-03 00:38:01

C++引入了ostringstream、istringstream、stringstream这三个类,要使用他们创建对象就必须包含sstream头文件。
istringstream类用于执行C风格的串流的输入操作。
ostringstream类用于执行C风格的串流的输出操作。
stringstream类同时可以支持C++风格的串流的输入输出操作。

下图详细描述了几种类之间的继承关系:

简单的str和num(int类型)转换直接可以用stringstream类来实现,代码如下:

#include <sstream> #include <string> string num2str(double i)             //数字转字符串 {     stringstream ss;     ss<<i;     return ss.str(); }  int str2num(string s)                //字符串转数字 {     int num;     stringstream ss(s);     ss>>num;     return num; }

也可以使用ostringstream将字符串转换为数值

#include <iostream> #include <sstream> #include <string> using namespace std;  template<class T> inline string toString(const T &v){     ostringstream os;                           //创建字符串输入流     os<<v;                                      //将变量v的值写入字符串流     return os.str();                            //返回输出流生成的字符串 }  int main(){     string str1=toString(5);     cout<<str1<<endl;     string str2=toString(1.2);     cout<<str2<<endl;     return 0; }

运行结果:

接着利用istringstream将字符串转换为数值

#include <iostream> #include <sstream> #include <string> using namespace std;  template<class T> inline T fromString(const string &str){     istringstream is(str);                   //创建字符串输入流     T v;                                          is>>v;                                   //从字符串输入流中读取变量v     return v;                                //返回变量v }  int main(){     int v1=fromString<int>("5");     cout<<v1<<endl;     double v2=fromString<double>("1.2");     cout<<v2<<endl;     return 0; }

运行结果:

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!