标题:关于clear()与str("")的疑惑
只看楼主
FlightTime
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2015-1-28
结帖率:75%
已结贴  问题点数:20 回复次数:3 
关于clear()与str("")的疑惑
大家好,请大家指教下:
程序代码:
#include <fstream>
#include <sstream>
#include <iostream>

using namespace std;

int main()
{
    stringstream stream;
    int n=10;
    string str="abc";

    stream<<n;
    stream >> str;
    cout<<"1 str == "<<str<<endl;
    stream.clear();
    //stream.str("");

    char cstr[10]="china";
    stream <<cstr;
    stream >> str;

    cout<<"3 str == "<<str<<endl;
    return 0;
}


上面代码中stream.clear()是清除状态,stream.str("")是清除内容。
1. 如果注释stream.str(""),则输出为:
         

    我的理解是:stream.clear()没有清空内容,则 3 str == 10china
2. 如果注释stream.clear(),则输出为:
         
    我的理解是:stream.str("")清空了内容,所以  3 str == china

但运行结果与我的理解相差很多,请各位帮忙看看,而且我搜网上的结果好像都不太一样。谢谢大家。
搜索更多相关主题的帖子: stream color 
2015-03-10 11:08
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:10 
看了三遍,没看懂你想说什么,云里雾里
2015-03-10 13:56
天使梦魔
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:37
帖 子:564
专家分:2754
注 册:2007-8-29
得分:10 
vs2008没问题,这个和编译器有关,看实现
自己百度搜stringstream::clear
有些做了安全转换,有些没有
2015-03-10 14:13
天使梦魔
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:37
帖 子:564
专家分:2754
注 册:2007-8-29
得分:0 
3 str == 10china
这个想法是错的,stringstream在没有清除前是无法用重定向追加的。
你可以自己尝试写代码试试。你在用流操作的时候<<,>>字符,它会自己检查以确保你能否操作成功。但我没用过这个,不知道它有没有错误返回,你可以跟踪一下。

不过我的“微软”标准它只需要一次清除操作,后续写入值是无效的。
2015-03-10 14:29



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-442498-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.073188 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved