在换行出现之前,如何将几个整数作为输入?

Mer*_*sud -3 c++ stdin user-input input

我想将几个整数作为输入,直到出现换行符('\n',而不是 EOF),然后将它们放入 anarray或 a 中vector。如何使用 C++ 独有的关键字来做到这一点?

Tho*_*ews 5

这是使用更多 C++ 函数和数据结构的东西:

#include <string>
#include <sstream>
#include <iostream>

int main()
{
  std::vector<int> database;
  std::string text_line;
  std::getline(std::cin, text_line);
  std::istringstream input_stream(text_line);
  int value;
  while (input_stream >> value)
  {
    database.push_back(value);
  }
// Edit 1: printing the vector
  for (auto&& v:database)
  {
     std::cout << v << " ";
  }
  std::cout << "\n";
  return EXIT_SUCCESS;
}
Run Code Online (Sandbox Code Playgroud)

在上面的程序中,一行文本(即换行前的文本)被读入字符串变量。

然后将字符串视为输入流,并将字符串中的所有数字放入向量中。

该字符串有助于限制仅从文本行输入的数字。

  • 没有效率要求,只需以“C++ 风格”编写即可。通常,效率仅在必要时应用。在这种情况下,等待用户输入胜过任何双缓冲执行。除非用户输入了*大量*的数据,否则无需担心额外的内存消耗。 (4认同)
  • 这对输入进行双缓冲;它可以轻松使用 C 版本内存的 5 倍。 (2认同)
  • @ThomasMatthews 有过早的优化和过早的悲观。cin 不是“用户”,它是您程序的输入流。不必要的双缓冲数据是过早的悲观化,而不是微优化。而你正在这样做,分配可能的千兆字节的额外内存......以检测`\n`。即使没有它,您的程序也会慢 5 倍,因为您忘记关闭 iostream 与 C 库的同步。我只是说,如果 C++ 的方式是使用 5 倍的内存和 5 倍的时间来解决一个简单的问题,那就使用 Java。或者编写不烂的 C++。 (2认同)