如何清除stringstream变量?

我已经尝试了几件事, ios

std::stringstream m;
m.empty();
m.clear();

二者都不起做用。 xcode


#1楼

这些不会在gnu c ++中丢弃stringstream中的数据 函数

m.str("");
    m.str() = "";
    m.str(std::string());

如下确实为我清空了字符串流: spa

m.str().clear();

#2楼

不管使用哪一种编译器,这都应该是最可靠的方法: code

m=std::stringstream();

#3楼

个人2美分: 继承

这彷佛在xcode和dev-c ++中对我有用,我有一个菜单形式的程序,若是按照用户的要求迭代执行,它将填充一个stringstream变量,该变量在第一次执行该代码时就能够正常工做运行,但不会在用户下次运行相同的代码时清除字符串流。 可是下面的两行代码最终每次都会在填充字符串变量以前清除stringstream变量。 (2小时的反复试验和Google搜索),顺便说一句,单独使用每一行都没法解决问题。 字符串

//clear the stringstream variable

sstm.str("");
sstm.clear();

//fill up the streamstream variable
sstm << "crap" << "morecrap";

#4楼

m.str("");

彷佛有效。 编译器


#5楼

对于全部标准库类型,成员函数empty()都是查询,而不是命令,即表示“您是否为空?” 而不是“请扔掉您的内容”。 string

clear()成员函数是从ios继承的,用于清除流的错误状态,例如,若是文件流的错误状态设置为eofbit (文件结束),则调用clear()将设置错误状态回到goodbit (无错误)。 it

要清除stringstream的内容,请使用:

m.str("");

是正确的,尽管使用:

m.str(std::string());

从技术上讲效率更高,由于能够避免调用采用const char*std::string构造const char* 。 可是,现在,任何一种编译器在两种状况下都应该可以生成相同的代码-所以,我将只使用可读性更高的代码。

相关文章
相关标签/搜索