2010-10-30 2 views
4

Я использую Visual C++ 2010 Express, и я только начал учиться C++.Как сохранить программу на C++?

Так что, когда я хочу запустить этот код:

#include <iostream> 
using namespace std; 

int main(){ 
    cout << "Hello World! "; 
    return 0; 
} 

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

ответ

5

Если это просто читать вывод, вам не нужна программа, чтобы остаться «живым», просто запустить его из окна командной строки, и выход будет оставаться видимым. Вы также можете использовать отладчик для прерывания выполнения в определенной точке.

Есть много способов, хорошее и плохое, чтобы сделать это с кодом:

#include <iostream> 
using namespace std; 

int main() 
{ 
    cout << "Hello World! "; 
    cin.get(); // Wait for some input, as suggested by PigBen 
    return 0; 
} 

или:

#include <iostream> 
using namespace std; 

int main() 
{ 
    cout << "Hello World! "; 
    Sleep(1000); // one second 
    return 0; 
} 

или, несмотря на то, что это плохая идея:

#include <iostream> 
using namespace std; 

int main() 
{ 
    cout << "Hello World! "; 
    while (true) { } 
    return 0; 
} 

Что вы пытаетесь достичь?

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

+0

Имеет ли istream оператор()? –

+0

@ PigBen: не уверен, но второй мысль, не видя один. Поправив его немного, чтобы быть более правильным. – ssube

+0

Исправить. Но почему бы вам просто не использовать cin.get() вместо создания фиктивной переменной? –

1
cout<<"Please press any key to quit"; 
char number; 
cin>>number; 
+0

Вы были правы. Я исправил. – m88

+4

'нажмите любую клавишу И RETURN, чтобы завершить работу – smerlin

2

Кто-то, кто не знаком с окна консоли приложения развивающейся будет в состоянии помочь вам лучше, до тех пор, попробуйте следующее:

#include <iostream> 

int main(){ 
    std::cout << "Hello World! "; 
    std::cin.get(); // waits for input, press enter to continue 
    return 0; 
} 

Reference for std::cin.get()

+0

-1: В документации говорится: «Извлекает символ из потока и возвращает его значение (отлитое от целого)». Не требуется блокировать, если никакие символы недоступны, поэтому, хотя он работает в конфигурации плаката, он (тонко) не является стандартным. У меня были проблемы с этим в системах Linux, где он не блокируется! –

+0

@ André Спасибо, что указали, что я просто попробовал это на Mac OS X (без проблем). Я никогда не пробовал это в Linux. – bjoernz

1

Во-первых, вы, вероятно, хотите добавить выход новой строки в Добавьте его в консоль.

cout << "Hello World! " << endl; 

Если вы действительно не хотите, чтобы выйти сразу, вы можете ждать ввода консоли с помощью cin после написать это, или вызвать Sleep(10000) для 10-секундной задержки и так далее.

7

В Visual Studio у вас есть два варианта запуска программы. Абсолютно не нужно изменять свой код, как предлагают многие другие сообщения.

1) Запуск с отладкой. Вероятно, вы используете это, и чтобы остановить его в любом месте, вам нужно установить точку останова.

2) Работает без отладки. Это должно оставить окно консоли открытым и предложить вам нажать клавишу до закрытия окна.

+0

+1 для чтения разума и указания на * реальную причину. Плакат путается между сохранением программы и исчезновением окна консоли. –

5
system("Pause"); 

«Нажмите любую клавишу для продолжения ...»

+2

Это лучший ответ, который я вижу. Я не могу поверить, что был проголосован бесконечный цикл ... –

+0

@Ed: Если вы имеете в виду мой ответ, который имеет единственный бесконечный цикл, который я вижу, я не ожидаю, что люди его будут использовать. Просто схватил несколько способов с головы. Я должен, вероятно, переупорядочить их. – ssube

+2

Я удивлен, поэтому многие люди предлагают модификацию кода, когда это не нужно. –

1

Установите точки останова в конце главной функции.

+1

Это означает, что вы всегда работали в режиме отладки, не так ли? – pinkfloydx33

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