我正在扫描来自std::istream
的文本。扫描已经在进行中,我想提取当前正在读取的行(从头到尾)。此getCurrentLine()
功能不得修改std::istream
位置。
我编写了这段代码,我觉得这很混乱。有一个更好的方法吗? (charStream_
是std::istream
)
std::string Scanner::getCurrentLine() const {
auto pos = charStream_.tellg();
// rewind until beginning of the line or stream
while (charStream_.peek() != '\n' && charStream_.tellg() != 0)
charStream_.unget();
// consume endline character
if (charStream_.peek() == '\n')
charStream_.get();
std::stringstream lineStream;
char c;
do {
c = static_cast<char>(charStream_.get());
lineStream << c;
} while (c != '\n' && c != EOF);
charStream_.seekg(pos);
return lineStream.str();
}
使用函数std :: getline(std :: cin,std :: string)