С++ cin.getline читает только один символ

Я использую Xcode 4.5, и в моей программе есть следующий код:

char strChar[5];
cin.getline(strChar, 5);
int i = atoi(strChar);

Когда я начинаю пытаться ввести число, после нажатия первого числа консоль больше не будет принимать ввод (кроме клавиши ввода, и в этом случае программа сразу возвращает ноль). Очевидно, я хочу принять более одного персонажа, как мне это сделать?

Спасибо за ответ на мой вопрос


person prince    schedule 22.09.2012    source источник


Ответы (3)


*******UPDATE*********** 10/04/2012*********

APPLE ВЫПУСТИЛА ОБНОВЛЕНИЕ, ИСПРАВЯЮЩЕЕ ЭТУ ПРОБЛЕМУ. XCODE 4.5.1 (4G1004)

Это известная ошибка в последней версии Xcodes (4.5). Apple знает об этом и работает над патчем. В настоящее время на момент публикации нет известного обходного пути. Пока вам просто нужно запустить программу в Терминале.

** Обратите внимание, что в более новых версиях Xcode инструменты командной строки не устанавливаются автоматически ** Для установки перейдите в Xcode -> Настройки -> Загрузки -> Установите инструменты командной строки

Для запуска программ C++ в терминале:

1.) Откройте терминал.

2.) Перейдите в правильный каталог

3.) введите "make projectName" без кавычек

4.) Выполнить программу: "./projectName" без кавычек

person HashHazard    schedule 24.09.2012
comment
Лучшее, что я могу сделать, надеясь, что Apple быстро решит проблему, это определенно боль .. лол - person HashHazard; 25.09.2012
comment
@JamesPrince Загрузите обновление - person HashHazard; 05.10.2012

Если вы хотите прочитать одну строку, вероятно, проще написать: std::getline(std::cin, str), где str имеет тип std::string. Ваш пример читает только 5 символов.

Примечание. Если вы хотите прочитать не одно число, а набор чисел в нескольких строках, вы должны поместить все это в цикл.

person Aleph    schedule 22.09.2012
comment
У меня такое же поведение, если я использую этот код, консоль в основном зависает после первого символа (но xcode не падает или что-то еще) - person prince; 22.09.2012

просто примечание: ваш код не читал строку в «str», а просто «strChar».

person Whistler    schedule 22.09.2012
comment
Я просто играл с кодом, и в итоге он выглядел так, я изменю его, чтобы он был более понятным. - person prince; 22.09.2012