Попытка прочитать строку ввода с клавиатуры в C ++ - PullRequest
3 голосов
/ 16 октября 2011

Я пытаюсь выполнить задание колледжа на C ++, и у меня возникают проблемы с тем, что должно быть очень простой операцией.Я пытаюсь прочитать строку символов с клавиатуры.Это соответствующий код:

  string t;
  cout << endl << "Enter title to search for: ";
  getline(cin, t, '\n');  

Я понимаю, что последняя строка должна считывать входной буфер (в данном случае cin) и сохранять символ в строке 't', пока не достигнетсимвол новой строки, а затем продолжить выполнение программы.

Однако, когда я запускаю свой код в XCode, он просто как бы перепрыгивает через функцию getline и обрабатывает 't' как пустую строку.

Что происходит?Я пытался использовать cin >> t, но это всегда читало символы - Почему я не могу заставить себя так себя вести?

Ответы [ 3 ]

4 голосов
/ 16 октября 2011

Причина, по которой операция ввода, по-видимому, пропущена, скорее всего (это означает, что игнорируя возможные особенности некорректной XCode IDE), что вы выполнили какой-то ввод ранее и оставили новую строку во входном буфере .

Чтобы исправить это, убедитесь, что вы очищали входной буфер после каждой операции ввода, которая логически должна занимать строку ввода.

Один простой способ - всегда использовать getline вa string, а затем используйте, например, istringstream, если вы хотите преобразовать спецификацию числа в тип числа.

Cheers & hth.,

0 голосов
/ 16 октября 2011

Это звучит как проблема с тем, как Xcode запускает вашу программу. Попробуйте запустить вашу программу прямо из терминала, и посмотрите, достаточно ли этого для решения вашей проблемы.

0 голосов
/ 16 октября 2011

Со страницы документов это выглядит так, как вы хотите

cin.getline(t,256,'\n');

или что-то подобное.

...