【问题标题】:Reading input from std::cin TWICE从 std::cin 两次读取输入
【发布时间】:2013-07-31 06:45:20
【问题描述】:

当我使用 cin.get 函数从 cin 获取输入时,它会自动更新输入文件中的读取位置。我应该怎么做才能将读取位置返回到文件的开头,以便我可以第二次接受输入?

比如说我有以下文件input.txt

“向你的新世界问好”

以及下面的get循环来获取input.txt文件:

while(cin.get(charTemp)){
     numberOfChars++; 
} 

我怎样才能输入两次?

【问题讨论】:

  • 为什么不直接将文件内容存入内存呢?
  • 对于文件流或字符串流,你可以使用istream::seekg(),但你不能在标准输入上这样做。

标签: c++ input iostream cin


【解决方案1】:

您将无法重新读取标准输入流。如果您确实需要阅读内容两次,则必须将其存储,例如:

std::stringstream input;
input << std::cin.rdbuf();
input.seekg(0);
// use input and seek back to the beginning if needed

【讨论】:

    【解决方案2】:

    使用rewind(stdin)

    http://www.cplusplus.com/reference/cstdio/rewind/ 供参考。

    【讨论】:

      猜你喜欢
      • 2010-11-27
      • 2021-02-28
      • 1970-01-01
      • 2012-03-19
      • 2011-11-27
      • 1970-01-01
      • 2021-02-26
      相关资源
      最近更新 更多