Вот стандартная идиома ввода / вывода:
#include <iostream>
#include <sstream>
#include <string>
int main()
{
std::string line;
std::cout << "Please enter some text: ";
while (std::getline(std::cin, line))
{
std::istringstream iss(line);
std::string word;
if (iss >> word)
{
std::cout << "You said, '" << line << "'. The first word is '" << word << "'.\n";
std::cout << "Please enter some more text, or Ctrl-D to quit: ";
}
else
{
// error, skipping
}
}
}
Вы не можете не прочитать строку, кроме как по достижении конца входного потока, о котором пользователь должен сообщить Ctrl-D
иличто-то подобное (Ctrl-Z
в MS-DOS).Вы можете добавить еще одно условие разрыва, например, если усеченная входная строка в нижнем регистре равна "q"
или около того.
Внутренний цикл использует поток строк для токенизации строки.Обычно вы обрабатываете каждый токен (например, конвертируете в числа?), Но здесь нам нужен только один, а именно первое слово.