Подтвердить что ты не робот

Как сделать вывод на консоль С++?

Есть ли строка кода, которая завершит работу программы?

Что-то вроде python sys.exit()?

4b9b3361

Ответ 1

#include <cstdlib>
...
exit( exit_code );

Ответ 2

Пока вы можете вызывать exit() (и, возможно, это необходимо сделать, если ваше приложение встречает какую-то фатальную ошибку), самый чистый способ выхода из программы - вернуться из main():

int main()
{
    // do whatever your program does

} // function returns and exits program

Когда вы вызываете exit(), объекты с автоматической продолжительностью хранения (локальные переменные) не уничтожаются до того, как программа завершится, поэтому вы не получите правильную очистку. Этим объектам может потребоваться очистка всех имеющихся у них ресурсов, сохранение любых ожидающих изменений состояния, прекращение любых запущенных потоков или выполнение других действий для того, чтобы программа завершила чистоту.

Ответ 3

Существует несколько способов прекратить выполнение вашей программы. Какой из них подходит, зависит от того, почему вы хотите завершить свою программу. Подавляющее большинство времени это должно быть, выполняя оператор возврата в вашей основной функции. Как и в следующем.

int main()
{
     f();
     return 0;
}

Как выяснили другие, это позволяет полностью уничтожить все ваши стековые переменные, чтобы правильно очистить их. Это очень важно.

Если вы обнаружили ошибку где-то глубоко в вашем коде, и вам нужно выйти, вы должны выбросить исключение, чтобы вернуться к основной функции. Как и в следующем.

struct stop_now_t { };
void f()
{
      // ...
      if (some_condition())
           throw stop_now_t();
      // ...
}

int main()
{
     try {
          f();
     } catch (stop_now_t& stop) {
          return 1;
     }
     return 0;
 }

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

Если в маловероятном случае, когда ваша программа обнаруживает условие, указывающее, что более безопасно выполнять какие-либо инструкции, вы должны использовать std:: abort(). Это приведет к внезапной остановке вашей программы без дальнейшей обработки. std:: exit() аналогичен, но может вызывать обработчики atexit, которые могут быть плохими, если ваша программа достаточно подготовлена.

Ответ 4

Да! exit(). Это в <cstdlib>.

Ответ 5

Разрешение потоку выполнения оставить main на возвращая значение или позволяющее исполнению достигнуть конца функции, - это путь, по которому программа должна завершиться, за исключением неустранимой обстоятельства. Возвращение значения необязательно в С++, но я обычно предпочитаю возвращать EXIT_SUCCESS, найденный в cstdlib (значение для платформы, которое указывает, что программа выполнена успешно).

#include <cstdlib>

int main(int argc, char *argv[]) {
  ...
  return EXIT_SUCCESS;
}

Если, однако, ваша программа достигает неустранимого состояния, она должна вызывать исключение. Однако важно осознать последствия этого. Нет общепринятых лучших практик для принятия решения о том, что должно или не должно быть исключением, но есть некоторые общие правила, о которых вы должны знать.

Например, бросание исключения из деструктора почти всегда является ужасной идеей, потому что уничтоженный объект может быть уничтожен, потому что уже было выбрано исключение. Если выбрано второе исключение, вызывается terminate, и ваша программа будет остановлена ​​без какой-либо последующей очистки. Вы можете использовать uncaught_exception, чтобы определить, безопасно ли это, но обычно лучше никогда не позволять исключениям оставлять деструктор.

В то время как обычно вы всегда можете выполнять функции, которые вы вызываете, но не писали, чтобы генерировать исключения (например, new будет бросать std::bad_alloc, если он не может выделить достаточное количество памяти), часто начинающим программистам сложно поддерживать отслеживать или даже знать обо всех специальных правилах, связанных с исключениями на С++. По этой причине я рекомендую использовать их только в тех ситуациях, где нет разумного способа продолжить выполнение вашей программы.

#include <stdexcept>
#include <cstdlib>
#include <iostream>

int foo(int i) {
  if (i != 5) {
    throw std::runtime_error("foo: i is not 5!");
  }
  return i * 2;
}

int main(int argc, char *argv[]) {
  try {
    foo(3);
  }
  catch (const std::exception &e) {
    std::cout << e.what() << std::endl;
    return EXIT_FAILURE;
  }
  return EXIT_SUCCESS;
}

exit является удержанием от C и может привести к тому, что объекты с автоматическим хранилищем не будут правильно очищены. abort и terminate эффективно заставляют программу совершать самоубийство и определенно не будут очищать ресурсы.

Независимо от того, что вы делаете, не используйте исключения, exit или abort/terminate как костыль, чтобы разобраться в написании правильно структурированной программы. Сохраните их для исключительных ситуаций.

Ответ 6

если вы в основном можете сделать:

return 0;  

или

exit(exit_code);

Код выхода зависит от семантики вашего кода. 1 - ошибка 0 e нормальный выход.

В другой функции вашей программы:

exit(exit_code)  

выйдет из программы.

Ответ 7

В main() также есть:

return 0;

Ответ 8

#include <cstdlib>
...
/*wherever you want it to end, e.g. in an if-statement:*/
if (T == 0)
{
exit(0);
}

Ответ 9

Этот SO пост содержит ответ, а также объяснение, почему бы не использовать exit(). Стоит прочитать.

Короче говоря, вы должны вернуть 0 в main(), так как он запустит все деструкторы и выполнит очистку объекта. Бросок также будет работать, если вы выходите из ошибки.

Ответ 10

вернуться к основному, который должен вернуть EXIT_FAILURE,

или std::terminate(), если поврежден.

(из комментария Мартина Йорка)

Ответ 11

else if(Decision >= 3)
    {
exit(0);
    }

Ответ 12

Выход (0);//в конце основной функции перед закрытием фигурных скобок

Ответ 13

достаточно просто.

выход (0); }//конец функции

Убедитесь, что на обеих сторонах поля есть пробел. Без пробелов программа не останавливается.