如何清除stringstream变量?

馋奶兔 提交于 2020-02-28 11:06:42

我已经尝试了几件事,

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

两者都不起作用。


#1楼

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

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

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

    m.str().clear();

#2楼

无论使用哪种编译器,这都应该是最可靠的方法:

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()都是查询,而不是命令,即表示“您是否为空?” 而不是“请扔掉您的内容”。

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

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

m.str("");

是正确的,尽管使用:

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

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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!