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'?
Ответы
Ответ 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, это сделает трюк