C++ int 和 string 之间的相互转换
2013-07-18 16:01
260 查看
要实现这个目标,非stringstream类莫属。这个类在<sstream>头文件中定义, <sstream>库定义了三种类:istringstream、ostringstream和stringstream,分别用来进行流的输入、输出和输入输出操作。另外,每个类都有一个对应的宽字符集版本。string到int类型的转换<sstream>使用string对象来代替字符数组。这样可以避免缓冲区溢出的危险。而且,传入参数和目标对象的类型被自动推导出来,即使使用了不正确的格式化符也没有危险。std::stringstream stream;string result="10000";
int n = 0;
stream << result;
stream >> n;//n等于10000int到string类型的转换string result;
int n = 12345;
stream << n;
result =stream.str();// result等于"12345"重复利用stringstream对象如果你打算在多次转换中使用同一个stringstream对象,记住再每次转换前要使用clear()方法,在多次转换中重复使用同一个stringstream(而不是每次都创建一个新的对象)对象最大的好处在于效率。stringstream对象的构造和析构函数通常是非常耗费CPU时间的。经试验,单单使用clear()并不能清除stringstream对象的内容,仅仅是了该对象的状态,要重复使用同一个stringstream对象,需要使用str()重新初始化该对象。示例2:while (std::cin>>i) { temp.push_back(i); if (temp.size()>1) { std::vector<int>::size_type y=temp.size(); stream<<y; std::cout<<"size:"+stream.str()<<std::endl; stream.clear(); stream.str(""); }}转换中使用模板 也可以轻松地定义函数模板来将一个任意的类型转换到特定的目标类型。例如,需要将各种数字值,如int、long、double等等转换成字符串,要使用以一个string类型和一个任意值t为参数的to_string()函数。to_string()函数将t转换为字符串并写入result中。使用str()成员函数来获取流内部缓冲的一份拷贝:示例3:template<class T>void to_string(string & result,const T& t){ ostringstream oss;//创建一个流oss<<t;//把值传递如流中result=oss.str();//获取转换后的字符转并将其写入result
}这样,你就和衣轻松地将多种数值转换成字符串了:to_string(s1,10.5);//double到stringto_string(s2,123);//int到stringto_string(s3,true);//bool到string
int n = 0;
stream << result;
stream >> n;//n等于10000int到string类型的转换string result;
int n = 12345;
stream << n;
result =stream.str();// result等于"12345"重复利用stringstream对象如果你打算在多次转换中使用同一个stringstream对象,记住再每次转换前要使用clear()方法,在多次转换中重复使用同一个stringstream(而不是每次都创建一个新的对象)对象最大的好处在于效率。stringstream对象的构造和析构函数通常是非常耗费CPU时间的。经试验,单单使用clear()并不能清除stringstream对象的内容,仅仅是了该对象的状态,要重复使用同一个stringstream对象,需要使用str()重新初始化该对象。示例2:while (std::cin>>i) { temp.push_back(i); if (temp.size()>1) { std::vector<int>::size_type y=temp.size(); stream<<y; std::cout<<"size:"+stream.str()<<std::endl; stream.clear(); stream.str(""); }}转换中使用模板 也可以轻松地定义函数模板来将一个任意的类型转换到特定的目标类型。例如,需要将各种数字值,如int、long、double等等转换成字符串,要使用以一个string类型和一个任意值t为参数的to_string()函数。to_string()函数将t转换为字符串并写入result中。使用str()成员函数来获取流内部缓冲的一份拷贝:示例3:template<class T>void to_string(string & result,const T& t){ ostringstream oss;//创建一个流oss<<t;//把值传递如流中result=oss.str();//获取转换后的字符转并将其写入result
}这样,你就和衣轻松地将多种数值转换成字符串了:to_string(s1,10.5);//double到stringto_string(s2,123);//int到stringto_string(s3,true);//bool到string
相关文章推荐
- C++ 中 int,char*,string,CString之间相互转换-整理
- C++中int、string、const char*、CString之间的相互转换
- c++中string与int之间相互转换
- C++中 char*, string, CString, int, double之间相互的转换
- c++中 int 和 string 的相互转换
- int与string之间的相互转换
- MFC/C++/C中CString, int, string, char*之间的转换
- MFC/C++/C中字符类型CString, int, string, char*之间的转换
- c++中string和int相互转换
- c# int[] 和string[] 之间的相互转换
- C++中单个数字的int类型和char类型之间的相互转换
- C++中string和Int的相互转换
- CString,string,char[],int相互之间的转换
- c++ 中 char 与 string 之间的相互转换问题
- MFC/C++/C中字符类型CString, int, string, char*之间的转换
- c++中char *与string之间的相互转换及原理
- enum枚举与int string类型之间的相互转换
- 总结:string,char*,CString,int,WCHAR*之间的相互转换:
- c++ 中 char 与 string 之间的相互转换问题
- 【C/C++】int,string,char之间转换