从std :: istream提取完整的当前行

问题描述 投票:0回答:1

我正在扫描来自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();
}
c++ istream istringstream istream-iterator
1个回答
0
投票

使用函数std :: getline(std :: cin,std :: string)

© www.soinside.com 2019 - 2024. All rights reserved.