2016-02-04 2 views
0

Я новичок в C++. Раньше я запускал код в NetBeans. Однако после того, как я ввел строку, а IDE вывел результат, я ожидал, что программа перестанет работать.Как я могу убедиться, что программа перестает работать после того, как результат IDE имеет результат вывода

Однако в нижней части среды NetBeans есть панель, которая указывает, что программа все еще работает.

Почему это происходит?

Какое изменение я должен внести в свой код, чтобы программа перестала работать?

#include <iostream> 
#include <string> 
using namespace std; 

int main() { 
    cout << "Enter a string of characters including punctuation." << endl; 
    for (string s; getline(cin, s); cout << endl) 
     for (auto i : s) 
      if (!ispunct(i)) cout << i; 

    return 0; 
} 
+0

Я не понимаю. Компилятор завершит работу до запуска программы. Компилятор не выполняет вашу программу. –

+3

Вы должны нажать Ctrl-D на Linux и Mac OS или Ctrl-Z в Windows, чтобы отметить конец ввода. –

+1

Как вы сказали программе, что она дошла до конца? Вы рассмотрели возможность изменения кода для печати сообщения после выхода из цикла? Как насчет печати каждой строки по мере ее чтения? Основные методы отладки. Может быть, вы только хотите, чтобы он читал одну строку; если это так, вам не нужен цикл, чтобы продолжать читать больше строк. –

ответ

3

Программа зациклилась на getline, как вы сказали ей, с инструкцией for. Ваше условие выхода - getline возвращает false. Для этого вам нужно закрыть файл, сделав это, введя Control-D на Unix или Control-Z на Windows.

Другой тактикой будет цикл, пока кто-нибудь не наберет «q» или «exit» или пустую строку.

Смежные вопросы