来看几个实例:
1)用于输出不同格式的:
按行输入,然后按单词输出。
string word,line;
while(getline(cin,line))
{
istringstream is(line);
while(is>>word)
cout<<word;
}
2)用于不同类型之间的数据转换
1.由其它的类型转化为字符串类型
template <class T>
string to_string (const T & t)
{
ostringstream os;
if (!(os<<t)) { 错误处理}
return os.str();
}
2.由字符串类型转化为其它的类型
template <typename T>
T from_string ( const string & s)
{
T t;
istringstream is (s);
if(!(t>>s) ){ };
return t;
}
在转化后需要指明转化后的类型:double d=from_string<double>("12.33");
使用stringstream 可以实现任意的转化,只要指明类型
template <class target,class source>
target leix_cast(source srg)
{
stringstream inter;
target result;
if(!(inter<<srg)||!(inter>>result)||!(inter>>std::ws).eof()) {出错处理}
return result;
}
}