Предполагая, что вы действительно работаете в Windows, худшая вещь о system("PAUSE")
заключается в том, что она предает фундаментальное непонимание архитектуры вашей операционной системы. Вам не нужна замена кода для system("PAUSE")
, потому что - неправильное место для решения проблемы.
Начинающие, как поставить system("PAUSE")
или даже портативный вариант, как std::cin.get()
в конце программы, так как в противном случае «окно исчезает» как только заканчивается программа. Однако такая логика глубоко ошибочна. Окно, которое вы, вероятно, видите во время запуска программы, и которое заставило вас задать этот вопрос, - , а не, часть самой программы, но часть среды, в которой выполняется программа.
Типичная консольная программа, однако, не должна принимать подробные сведения о среде, в которой она выполнена. Вместо этого вы должны научиться думать более абстрактно, когда дело доходит до ввода и вывода через std::cout
и std::cin
. Кто говорит, что ваша программа даже видна для пользователя? Вы можете читать или записывать в файл; вы можете использовать трубы; вы можете отправить текст в сетевой сокет. Вы не знаете.
#include <iostream>
int main()
{
std::cout << "Hello world\n"; // writes to screen, file, network socket...
}
Открытие графического окна и отображения вывода текста на экране не в рамках вашей программы, но с использованием system("PAUSE")
предполагает точно, что один случай использования и ломает все другие.
Если вы используете IDE, например Visual Studio, и вас раздражает тот факт, что нажатие F5 в конечном итоге приводит к исчезновению окна, прежде чем вы сможете увидеть весь вывод, вот еще три более разумные альтернативы, чем манипулирование самой программой:
- Демистификация. Обратите внимание, что то, что Visual Studio действительно делает, это вызвать компилятор Visual C++ за кулисами, чтобы создать * .exe-файл. Откройте собственное окно консоли с помощью
cmd
или с помощью Инструменты> Командная строка Visual Studio, найдите каталог этого * .exe-файла и запустите его там (вы также должны научиться запускать компилятор без помощи Visual Studio, потому что это даст вы более глубокое понимание процесса сборки C++).
- Нажмите CTRL + F5.
- Место точки останова в конце вашего кода. Прочитайте documentation, если вы не знаете, как это сделать.
Почему 'cin.get()' работает для вас? –
['std :: istream :: get()'] (http://en.cppreference.com/w/cpp/io/basic_istream/get) –
'cin.get()' - это тупой способ приостановить ваш программа в любом случае. Если в входном буфере есть символы, это не будет приостанавливаться вообще. Если в буфере нет символов, он будет возобновляться только после нажатия клавиши ввода, и любые символы, которые вы вводили в это время, будут отображаться на экране, что приведет к очень непрофессионально выглядящей программе. Это нормально, если вы просто создаете программу для себя. Но если это так, 'system (" pause ")' тоже хорошо, если он работает в вашей системе. –