C++ stringstream实现不同类型数据的转换
2017-11-17 16:12
555 查看
利用stringstream构造一个函数,可以将任意类型转换为string类型。
利用stringstream构造一个函数,可以将任意类型转换为任意类型。
执行结果如下:
函数toString()
函数convert()
此外,string中的空格将会阻断转换
如果采用istringstream则会分别赋值
完整代码如下:
PS:在进行多次转换的时候,两次转换之间必须调用stringstream的成员函数clear()
//构造一个任意类型转换string类型的函数 template<class T> void toString(string &s, const T &t) { stringstream ss; ss << t; s = ss.str(); //或ss >> s; }
利用stringstream构造一个函数,可以将任意类型转换为任意类型。
//构造一个任意类型转换任意类型的函数 template<class outT, class inT> outT convert(const inT &in) { stringstream ss; outT out; ss << in; ss >> out; return out; }
执行结果如下:
函数toString()
string str1, str2, str3; double dnum = 123.456; toString(str1, dnum); //或者使用toString<double>(str1, dnum); cout << "str1: " << str1 << endl; //输出str1: 123.456
函数convert()
float fnum = 456.123; str2 = convert<string>(fnum); //或者使用str2 = convert<string, float>(fnum); cout << "str2: " << str2 << endl; //输出str1: 456.123
此外,string中的空格将会阻断转换
int a; double b; str3 = "1 23.789"; a = convert<int>(str3); b = convert<double>(str3); cout << "a: " << a << "; " << "b: " << b << endl; //输出a: 1; b: 1
如果采用istringstream则会分别赋值
#include <iostream> #include <sstream> #include <string> using namespace std; #if 0 int main() { istringstream istr; istr.str("1 56.7"); //上述两个过程可以简单写成 istringstream istr("1 56.7"); cout << istr.str() << endl; int a; float b; istr >> a; cout << a << "; "; istr >> b; cout << b << endl; return 0; } //输出1; 56.7
完整代码如下:
#include <iostream>
#include <sstream>
#include <string>
using namespace std;
//构造一个任意类型转换string类型的函数
template<class T>
void toString(string &s, const T &t)
{
stringstream ss;
ss << t;
s = ss.str();
//ss >> s;
}
//构造一个任意类型转换任意类型的函数 template<class outT, class inT> outT convert(const inT &in) { stringstream ss; outT out; ss << in; ss >> out; return out; }
int main()
{
string str1, str2, str3;
double dnum = 123.456;
toString(str1, dnum);
//或者使用toString<double>(str1, dnum);
cout << "str1: " << str1 << endl;
float fnum = 456.123;
str2 = convert<string>(fnum);
//或者使用str2 = convert<string, float>(fnum);
cout << "str2: " << str2 << endl;
int a;
double b;
str3 = "1 23.789";
a = convert<int>(str3);
b = convert<double>(str3);
cout << "a: " << a << "; " << "b: " << b << endl;
return 0;
}
PS:在进行多次转换的时候,两次转换之间必须调用stringstream的成员函数clear()
相关文章推荐
- C++ stringstream 简化数据类型转换
- C++ stringstream 简化数据类型转换
- 使用C++ stringstream来进行数据类型转换
- C++ stringstream 简化数据类型转换
- C++ stringstream 简化数据类型转换
- C++中实现从std::string类型到bool型的转换
- C/C++开发语言系列之16---C++不同类型数据间的转换
- C++中不同类型数据之间的转换(调用库函数)
- c++ 中sort的用法 实例说明 sort是用来排序 实现不同类型的数据排序
- C++不同数据类型的转换
- C++中实现从std::string类型到bool型的转换
- C++中string,char,int,double等数据类型的相互转换及与ASCII码的转换
- stringstream/snprintf/sscanf/atoi/itoa数据类型转换比较
- istringstream, ostringstream, stringstream 实现数据类型转化为 string
- stringstream的重要用法(数据类型转换)
- C++中sprintf实现将一个基本数据类型的数组转换成字符串
- std::stringstream 模版实现,类型转换,遇到空格不跳出
- 用标准c++实现string与各种类型的转换
- 用标准C++进行string与各种内置类型数据之间的转换
- 用标准c++进行string与各种内置数据类型的转换(转)