Я работаю со строками в C++. Я недавно столкнулся с проблемой при вводе строк. Я использую cin >> string;
получить мою строку как ввод данных пользователем. Когда пользователь вводит пространство в строку, следующий вход автоматически заполнен остающимися буквами или иногда оставляемый незаполненный. Поскольку следующая входная строка часто является целым числом, это приведет к неприятной ошибке. Что такое хорошая фиксация для этого?
Править: Вот текущий код:
cout << "Please print the enemy's name: ";
getline(cin, enemyName);
Вы, вероятно, захотите получить весь ввод в строку до тех пор, пока пользователь не нажмет клавишу ввода. В этом случае можно сказать, что на самом деле вам нужно прочитать «строку» текста. Для этого вы должны использовать std :: getline
, например:
std::getline(cin, enemyName);
Предполагается, что вражеское имя определено как std :: string. Если вражеское имя представляет собой массив символов в стиле c, вам следует использовать cin.getline, например:
cin.getline(enemyName, sizeof(enemyName));
Но постарайтесь вообще избегать использования массивов символов в стиле C в C ++.
Поведение >> со строками является преднамеренным; он интерпретирует пробельные символы как разделители, на которых нужно остановиться, поэтому он действительно лучше всего перехватывает слова. std :: getline () (#include
Используйте getline ()
для чтения всей строки за раз.
getline (cin, string);