#cpp
Существует проблема, которую не могу уже решить дня 2 минимум. Чем объявлять system("pause") в C++? Пробовал и, и , и , весь гугл обшарил, даже на getchar() пробовал заменить system, но после отладки проги консоль в упор закрывается :(
Ответы
Ответ 1
Внимание! Правильный ответ на вопрос был уже дан пользователем Андрей: функция system объявлена в заголовочном файле cstdlib (или stdlib.h). Пожалуйста, не добавляйте новых ответов вида "я подключил N и все заработало", где N - очередной заголовок, косвенно включающий cstdlib. В Microsoft Visual Studio, например, при запуске по Ctrl-F5, IDE сама будет запускать программу, как будто бы в ней ожидается ввод в конце. Еще варианты решения: MS-овская функция _getch() изstd::cin >> c, где c - это char c. Правда, придется нажимать еще и enter. Breakpoint на закрывающей скобке int main(...) { }. Можно еще что-нибудь придумать. Ответ 2
Прекратите заниматься ерундой с вписыванием в код каких-то system("pause") и прочего мусора. Ничего подобного в консольном приложении быть не должно. Если вы занимаетесь разработкой консольного приложения под MS Visual Studio, то идите в настройки проекта, раздел Linker и установите настройку SubSystem в значение CONSOLE После чего возьмите в привычку запускать свое приложение не в отладочном режиме ("Start Debugging", F5), а в режиме "без отладчика" ("Start Without Debugging", Ctrl+F5). Консольное окно в таком случае не будет закрываться само, а будет оставаться на экране до следующего нажатия клавиши. Запуск же программ под отладчиком (F5) предназначен для ситуаций, когда у вас в коде есть точки останова, т.е. при запуске под отладчиком вас проблема автоматического закрытия окна волновать не должна вообще. В VS2017, начиная с определенной версии, появилась опция отладчика, которая предотвращает закрытие консольного окна по завершении программы, независимо от того, запускали ли вы вашу программу в режиме отладкиОтвет 3
Нужно подключать библиотеку cstdlib, т.к. system объявлена в ней. #includeОтвет 4
Скорее всего, вызов getchar() не срабатывает из-за того, что в буфере ввода уже есть некий символ. Обычно это перевод строки, оставшийся от scanf. Поэтому надо прочитать сначала его, а уже потом ещё один, который нажмёт пользователь: getchar(), getchar(); Ну и естественно, это дело надо удалить, как только оно перестанет быть нужным. PS: Если при вводе пользователь перед enter'ом нажмёт пробел, то всё равно не сработает.Ответ 5
//попробуй так-действие тожесамое #includeusing namespace std; int main(){ ... cout << "Для продолжения нажмите Enter\n"; cin.get();//можно несколько раз, для верности return 0; } Ответ 6
если builder то #includeОтвет 7
#includeusing namespace std; Как же вы товарищ самую стандартную библиотеку iostream -то не попробовали??? Она ещё cin cout и cerr позволяет использовать (может вы не знаете), а глядя на подсказки интеллисенса (он для C++ появился в VS2012) у неё вообще много чего есть (вернее конкретно в std). PS: для новичков: студийную библиотеку надо подключать в коде после не-студийных, а то так и будет писать типа "переменная system не найдена ..." - сами виноваты. Это ведь C++ ёкарный бабай. Ответ 8
У меня тоже была такая проблема. Я решил её путём включения в код директиву Windows.h Для тех кто не сталкивался с этой ошибкой: Не пользуйтесь как аргумент теми словами, которые написаны в книжках. Наша цель решить проблему. Не смотря на то что оператор system включён в стандартную библиотеку stdlib.h вам придётся временами включать директиву Windows.h для адекватной работы оператора system. #include#include using namespace std; int main() { cout << "\n Hello World!" << endl; system("pause"); return 0; } Ответ 9
попробуй Директиву #includeи вставь system("pause\n"); Для оператора getch(); директива #include ! Ответ 10
У меня такая проблема решилась вот так #includeusing namespace std; int main(int argc, char **argv) { cout << "После выполнения, вaс ожидает пауза" << endl; system("pause"); return 0; } Т.е. нужно добавить входные аргументы для функции main(), а именно int main(int argc, char **argv) { }
Комментариев нет:
Отправить комментарий