告诉cin停止阅读换行符

Mar*_*ark 22 c++

假设我想从输入中读取整数行a,如下所示:

1 2 3 4 5\n
Run Code Online (Sandbox Code Playgroud)

我希望cin停止'\n'字符,但cin似乎不认识它.

以下是我使用的内容.

vector<int> getclause() {
  char c;
  vector<int> cl;

  while ( cin >> c && c!='\n') {    
    cl.push_back(c);
    cin>>c;
  }
  return cl;
}
Run Code Online (Sandbox Code Playgroud)

我该如何修改它以便cin在看到'\n'字符时停止?

mfo*_*ini 29

使用getline和istringstream:

#include <sstream>
/*....*/
vector<int> getclause() {
  char c;
  vector<int> cl;
  std::string line;
  std::getline(cin, line);
  std::istringstream iss(line);
  while ( iss >> c) {    
    cl.push_back(c);
  }
  return cl;
}
Run Code Online (Sandbox Code Playgroud)

  • @Mark:这意味着你需要`#include <sstream>`.该消息几乎总是意味着已经声明了一个类型但是你错过了实际的定义.换句话说,你错过了一个标题. (2认同)