Подтвердить что ты не робот

Tell cin перестанет читать на новой строке

Предположим, что я хочу прочитать строку a целых чисел из ввода следующим образом:

1 2 3 4 5\n

Я хочу, чтобы cin останавливался на символе '\n', но cin, похоже, не распознает его.

Ниже я использовал.

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

  while ( cin >> c && c!='\n') {    
    cl.push_back(c);
    cin>>c;
  }
  return cl;
}

Как мне изменить это, чтобы cin остановился, когда увидел символ '\n'?

4b9b3361

Ответ 1

Использовать 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;
}

Ответ 2

Вы можете использовать метод getline, чтобы сначала получить строку, затем используйте istringstream, чтобы получить форматированный ввод из строки.

Ответ 3

Используйте std:: getline, это сделает трюк