достижения Цели
станд :: GetLine(), в то время как содержание цикл не работает
Новые на C++ и не нашли окончательного ответа на этот вопрос в другом месте. Я работаю над простой программой, которая читает в сообщении, введенном пользователем из консоли. Это упражнение для использования строковых переменных/конкатенации.
Мне нужно создать цикл, который читается в пользовательском вводе, который может содержать несколько строк ввода из командной оболочки.
Таким образом, моя функция должна читать этот вход, игнорируя новые строки, и заканчивать, если пользователь вводит два « &» на новой строке.
Покушение
Так вот моя функция:
string get_message() {
string message, line;
cout << "Enter the message > ";
cin.ignore(256, '\n');
while (getline(cin, line) && line != "&&") {
message = message + " " + line;
cout << message;
cin.clear();
}
return message;
}
Проблема Я бегу в том, что в то время цикла, пока &&
не найдено, содержание цикла не представляется запустить. Значение, когда я cout << message
Я получаю только одну предыдущую строку ввода.
Sample Run
Enter the Message > Messages.. this is a new message.
I'm a message on a new line, look at me.
New line.
&&
"New line." <--- from console cout
Result: New line.
Вопросы:
- Когда содержание цикла дозвонились?
- Почему я получаю только предыдущую строку, а не ВСЕ ранее (предположительно) конкатенированные строки?
- Есть ли лучший способ кодировать это?
«содержание цикла не отображается для запуска» - это, конечно же. где вы печатаете 'сообщение'? –
Внутри цикла (отредактировано) – acupajoe
Вы понимаете, что 'cin.ignore (256, '\ n');' ест вашу первую строку ввода, правильно? – WhozCraig