小彪的3D世界

小彪的狗窝

IT博客 联系 聚合 管理
  2 Posts :: 4 Stories :: 0 Comments :: 0 Trackbacks
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;
输出为:

但如果稍微改动下代码:
    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.
posted on 2008-06-01 14:10 Game Fun 阅读(625) 评论(0)  编辑 收藏 引用 所属分类: C++
只有注册用户登录后才能发表评论。