转载自:http://www.cnitblog.com/30701735/articles/44699.html
C++标准库中的stringStreams是从iostream类派生而来的,也因为其内部重载了针对各重内置类型和某些标准库类型(如string)的确"<<"和">>"操作符,所以可以用来进行类型之间的转换.看起来比较简单,但因为一般的C++书籍对其介绍比较少,经过测试之后发觉有些东西还是需要注意的.
例如以下代码段:
1
int a;
2
//
字符串流
3
stringstream strStream;
4
strStream << "345";
5
strStream >> a;
6
cout << a << endl;
7
strStream.clear();
8
strStream << "34561";
9
strStream >> a;
10
cout << a << endl;
输出为:
int a;
2
//
字符串流
3
stringstream strStream;
4
strStream << "345";
5
strStream >> a;
6
cout << a << endl;
7
strStream.clear();
8
strStream << "34561";
9
strStream >> a;
10
cout << a << endl;
但如果稍微改动下代码:
strStream << "345a";
strStream >> a;
cout << a << endl;
strStream.clear();
strStream << "34561";
strStream >> a;
cout << a << endl;
则输出结果就变为:
为什么呢?因为 strStream << "345a";
strStream >> a;这两句并未将strStream内的内容读取完毕导致strStream.clear()无效,程序并没有清除strStream中的字符串,所以在下次从strStream中输出的时候还是会读取到345.
本文探讨了C++标准库中的stringStreams类在实际应用中的常见误解及使用技巧,通过具体代码实例展示了其在类型转换过程中的行为特点,并强调了在使用时需要注意的细节,帮助开发者更高效地利用此功能。
552

被折叠的 条评论
为什么被折叠?



