2016-09-19 9 views
0

Вот основной фрагмент кода:Выяснение ли `cin.getline()` преуспевает

while (true) 
{ 
    cin.getline(str, STRSIZE); 
    if (str[0] == '\n') { break; } 
} 

По существу, когда пользователь вводит только одинокое возвращение ключ, петля должна до конца. Конечно, этот код не работает, потому что \n покраснел и никогда не заканчивается в str, чтобы убедиться, что был введен одинокий \n. Мне не любопытно, почему это не работает; Я знаю почему.

Как вы можете убедиться, что одинокая \n была введена, поэтому выход из while-loop?


Я знаю, что можно сделать следующее:

while (cin >> str); 

Однако:

  • >> занимает одно слово в то время
  • В моем реальном коде, в for-loop, а не while-loop.

ответ

3

Если cin.getline() не читает строки, cin будет находиться в состоянии ошибки.

Вы можете использовать:

while (cin.getline(str, STRSIZE)) 
{ 
    if (str[0] == '\0') { break; } 

    // Use str 
} 
+0

О, так что, когда я называю 'cin.getline()', 'str' будет установлен в' \ 0 ', а не мусор, что 'str' было до того, как вызов? –

+0

@SirJony, это вроде как правильно. 'str' будет установлено в пустую строку, а не' \ 0'. –

+0

В чем разница? Кстати, я использую 'char []', а не 'string'. Прошу прощения за то, что я не понимаю этого. –