2016-04-22 7 views
-4

Мне нужна альтернатива системе («пауза»), потому что мне нужен мой код, чтобы быть чистым и кросс-платформенным. Я начинающий программист в C++ и недавно прочитал о том, как BAD система («ПАУЗА») есть. Я попытался cin.get(), но я не знаю, как использовать его для приостановки программы, потому что, как я уже говорил ранее, я новичок в C++. Другие сообщения говорят, что поставить точку останова после заявления, но я не знаю, как это сделать. Любые предложения о том, как приостановить мою программу? Это действительно помогло бы, если бы вы, ребята, могли дать мне пример в программе, а не только функцию.Альтернатива системе («ПАУЗА»)?

EDIT: Этот вопрос отличается от system("pause"); - Why is it wrong?, потому что мне нужен быстрый и простой способ приостановить мою программу, и этот пост не отвечает на мой вопрос.

+1

Почему 'cin.get()' работает для вас? –

+0

['std :: istream :: get()'] (http://en.cppreference.com/w/cpp/io/basic_istream/get) –

+0

'cin.get()' - это тупой способ приостановить ваш программа в любом случае. Если в входном буфере есть символы, это не будет приостанавливаться вообще. Если в буфере нет символов, он будет возобновляться только после нажатия клавиши ввода, и любые символы, которые вы вводили в это время, будут отображаться на экране, что приведет к очень непрофессионально выглядящей программе. Это нормально, если вы просто создаете программу для себя. Но если это так, 'system (" pause ")' тоже хорошо, если он работает в вашей системе. –

ответ

1

Предполагая, что вы действительно работаете в 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, если вы не знаете, как это сделать.
+0

Освежающий, чтобы найти другого, кто чувствует себя так. Это шокирует, насколько мы редки. :( –

0

У меня есть один шаг ближе, cin.игнорировать, но пользователь может только нажать Enter, если он/она хочет продолжить. Пример с cin.ignore():

#include <iostream> 
int main() 
{ 
    cout << "Press enter to continue!\n"; 
    cin.ignore(); 
    //do something 
    return 0; 
} 

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

+0

И если программа запущена как 'program.exe> ​​file.txt', что произойдет потом? –

+0

@ChristianHackl Если вы считаете, что если программа была сделана из текстового файла, то да, я думаю, это будет То же самое. Возможно, вам придется выполнить некоторые другие команды, чтобы удовлетворить файл в C++. –

+0

Нет, я имею в виду, если программа записывает в текстовый файл. –

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