Cod*_*nts 464 c++ stringstream
我已经尝试了几件事,
std::stringstream m;
m.empty();
m.clear();
Run Code Online (Sandbox Code Playgroud)
两者都不起作用.
Wil*_*lka 737
对于所有标准库类型,成员函数empty()
是查询,而不是命令,即它意味着"你是空的吗?" 不要"请丢掉你的内容".
所述clear()
成员函数从继承ios
和用于清除流的错误状态,例如,如果一个文件流具有设定为错误状态eofbit
(结束文件),则调用clear()
将设置错误状态返回goodbit
(无差错) .
用于清除a的内容stringstream
,使用:
m.str("");
Run Code Online (Sandbox Code Playgroud)
是正确的,虽然使用:
m.str(std::string());
Run Code Online (Sandbox Code Playgroud)
在技术上更有效,因为你避免调用所std::string
采用的构造函数const char*
.但是现在任何编译器都应该能够在两种情况下生成相同的代码 - 所以我会选择任何更具可读性的代码.
Nik*_*iou 44
您可以清除错误状态并在一行中清空strignstream
std::stringstream().swap(m); // swap m with a default constructed stringstream
Run Code Online (Sandbox Code Playgroud)
这有效地将m重置为默认构造状态
Cod*_*nts 34
m.str("");
Run Code Online (Sandbox Code Playgroud)
似乎工作.
小智 32
无论编译器如何,这应该是最可靠的方式:
m=std::stringstream();
Run Code Online (Sandbox Code Playgroud)
小智 12
我总是在考虑它:
{
std::stringstream ss;
ss << "what";
}
{
std::stringstream ss;
ss << "the";
}
{
std::stringstream ss;
ss << "heck";
}
Run Code Online (Sandbox Code Playgroud)
Fra*_*tes 10
我的2美分:
这似乎对我有用xcode和dev-c ++,我有一个菜单形式的程序,如果根据用户的请求迭代执行将填充一个stringstream变量,这将在第一次代码时正常工作运行,但下次用户运行相同的代码时不会清除字符串流.但是下面的两行代码最后在填充字符串变量之前每次清除stringstream变量.(2小时的试用和错误以及谷歌搜索),顺便说一句,使用每一行都不会做到这一点.
//clear the stringstream variable
sstm.str("");
sstm.clear();
//fill up the streamstream variable
sstm << "crap" << "morecrap";
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
359264 次 |
最近记录: |