Работа со строками в C++

Я работаю со строками в C++. Я недавно столкнулся с проблемой при вводе строк. Я использую cin >> string; получить мою строку как ввод данных пользователем. Когда пользователь вводит пространство в строку, следующий вход автоматически заполнен остающимися буквами или иногда оставляемый незаполненный. Поскольку следующая входная строка часто является целым числом, это приведет к неприятной ошибке. Что такое хорошая фиксация для этого?

Править: Вот текущий код:

cout << "Please print the enemy's name: ";
getline(cin, enemyName);
5
задан Elliot Bonneville 13 May 2010 в 01:28
поделиться

4 ответа

Вы, вероятно, захотите получить весь ввод в строку до тех пор, пока пользователь не нажмет клавишу ввода. В этом случае можно сказать, что на самом деле вам нужно прочитать «строку» текста. Для этого вы должны использовать std :: getline , например:

std::getline(cin, enemyName);

Предполагается, что вражеское имя определено как std :: string. Если вражеское имя представляет собой массив символов в стиле c, вам следует использовать cin.getline, например:

cin.getline(enemyName, sizeof(enemyName));

Но постарайтесь вообще избегать использования массивов символов в стиле C в C ++.

7
ответ дан 18 December 2019 в 13:11
поделиться

Поведение >> со строками является преднамеренным; он интерпретирует пробельные символы как разделители, на которых нужно остановиться, поэтому он действительно лучше всего перехватывает слова. std :: getline () (#include ) по умолчанию использует '\ n' в качестве разделителя, но есть также версия std :: getline (), которая принимает настраиваемый символ разделителя, если он вам нужен.

3
ответ дан 18 December 2019 в 13:11
поделиться

Используйте вместо него getline (cin, string); .

2
ответ дан 18 December 2019 в 13:11
поделиться

Используйте getline () для чтения всей строки за раз.

getline (cin, string);
2
ответ дан 18 December 2019 в 13:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: