以下是我的代码的简化版本:
#include <iostream>
#include <string>
#include <sstream>
int main() {
std::istringstream f;
f.clear();
std::string s("line1");
f.str(s);
std::string line;
while (std::getline(f, line)) {
std::cout << line << std::endl;
}
f.clear(); // must both clear() and str()
f.str(s);
while (std::getline(f, line)) {
std::cout << line << std::endl;
}
return 0;
}
我的问题围绕这两行:
f.clear(); // must both clear() and str()
f.str(s);
调用f.str(s)
对我来说是有问题的,但我发现只是调用clear()
结束getline()
之后的调用并不会读取任何内容。
我查看了istringstream接口并没有看到任何重置类型的功能,但只是问我以防万一。
str()
对我不起作用的原因 - 我的类将istream *作为输入,它没有可能是文件或字符串的真实原件。
答案 0 :(得分:2)
目前还不是很清楚你想要完成什么,但是如果你想再次阅读同一个流,var query = (from b in sovDB.myTable
select new
{
myMinutes = Right("0" + SqlFunctions.StringConvert((int)(SqlFunctions.DateDiff("MINUTE", b.DateReceived, SqlFunctions.GetDate()) % 60)), 2)
}).ToList();
是istringstream
,istream
正常工作方式。
这两次打印“line1”:
seekg
答案 1 :(得分:0)
要重置 istringstream ,您需要致电。
f.str("")
f.clear()
仅用于清除错误标记,而不是实际内容&#39;。