如何清除stringstream变量?

时间:2020-03-05 18:41:41  来源:igfitidea点击:

我已经尝试了几件事,

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

两者都不起作用。

解决方案

回答

m.str("");

似乎有效。

回答

对于所有标准库类型,成员函数empty()是一个查询,而不是命令,即表示"我们是否为空?"而不是"请扔掉内容"。

clear()成员函数是从ios继承的,用于清除流的错误状态,例如如果文件流的错误状态设置为" eofbit"(文件末尾),则调用" clear()"会将错误状态设置回" goodbit"(无错误)。

为了清除stringstream的内容,使用:

m.str("");

是正确的,尽管使用:

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

从技术上讲效率更高,因为可以避免调用采用const char *的std :: string构造函数。但是,如今,任何一种编译器在这两种情况下都应该能够生成相同的代码,因此我将只使用可读性更高的代码。