Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.72/25: Рейтинг темы: голосов - 25, средняя оценка - 4.72
3 / 2 / 3
Регистрация: 09.05.2014
Сообщений: 64

Закрывается окно консольного проекта сразу после выполнения

06.04.2015, 13:33. Показов 5244. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, начал изучать книгу Страуструп Б. - Программирование. Принципы и практика использования C++ - 2011, читаю главу ошибки, запустив код из этой главы не получается просмотреть результаты выполнения программы, помогите решить эту проблему. Вот код программы


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
//
// This is example code from Chapter 5.6.3 "Bad input " of
// "Programming -- Principles and Practice Using C++" by Bjarne Stroustrup
//
 
#include "std_lib_facilities.h"
 
//------------------------------------------------------------------------------
 
double some_function()
{
    double d = 0;
    cin >> d;
    if (!cin) error("couldn't read a double in 'some_function()'");
    // do something useful
    keep_window_open(); // этого в коде небыло, это я пытался заставить окно закрываться 
//только после нажатия клавиши
    return 0;
}
 
//------------------------------------------------------------------------------
 
int main()
try {
    // our program
    some_function();
    keep_window_open();// этого в коде небыло, это я пытался заставить окно закрываться 
//только после нажатия клавиши
    return 0;    // 0 indicates success
}
catch (exception& e) {
    cerr << "error: " << e.what() << '\n';
    keep_window_open();
    return 1;    // 1 indicates failure
}
catch (...) {
    cerr << "Oops: unknown exception!\n";
    keep_window_open();
    return 2;    // 2 indicates failure
}
Функция keep_window_open() выглядит так:
C++
1
2
3
4
5
6
7
void keep_window_open()
{
    cin.clear();
    cout << "Please enter a character to exit\n";
    char ch;
    cin >> ch;
}
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
06.04.2015, 13:33
Ответы с готовыми решениями:

Окно выполнения сразу же закрывается
Доброго времени суток. После нажатия f9 в c++ builder 6 появляется окно выполнения и тут же закрывается, в чем может быть проблема?

После выполнения алгоритма программа сразу закрывается - как исправить?
дела такое: (циклический алгоритм, задача с матрицами) программа запускается в Win32 Console Application, но после выполнения алгоритма...

После выполнения программа сразу закрывается и не даёт увидеть результат
После выполнения программа сразу закрывается и не даёт увидеть результат если не вставить system(&quot;pause&quot;); //Эта программа для...

8
11 / 11 / 5
Регистрация: 01.04.2015
Сообщений: 120
06.04.2015, 13:41
не эксперт но попробую ответить. Попробуйте в конце программы перед последней поставить system("pause");
}
0
 Аватар для Kastaneda
5232 / 3205 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
06.04.2015, 13:41
может после чтения double в cin'е что-нибудь остается? Попробуй просто 0 вводить.
0
3 / 2 / 3
Регистрация: 09.05.2014
Сообщений: 64
06.04.2015, 15:14  [ТС]
Цитата Сообщение от maestro4250 Посмотреть сообщение
не эксперт но попробую ответить. Попробуйте в конце программы перед последней поставить system("pause");
}
system("pause")заменяет keep_window_open();

Цитата Сообщение от Kastaneda Посмотреть сообщение
может после чтения double в cin'е что-нибудь остается? Попробуй просто 0 вводить.
в функции keep_window_open() происходит очистка потока ввода
если вводить число то окно завершается по нажатию клавиши, мне же нужно чтобы при неверном вводе(ввод буквы) оно завершалось по нажатию клавиши, а не сразу как сейчас
0
 Аватар для Kastaneda
5232 / 3205 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
06.04.2015, 15:46
Цитата Сообщение от daert Посмотреть сообщение
в функции keep_window_open() происходит очистка потока ввода
Очистка состояния, символы из буфера ввода при этом не сбрасываются.
0
3 / 2 / 3
Регистрация: 09.05.2014
Сообщений: 64
06.04.2015, 15:50  [ТС]
Цитата Сообщение от Kastaneda Посмотреть сообщение
Очистка состояния, символы из буфера ввода при этом не сбрасываются.
ошибся, но разве оставшиеся в буфере ввода символы влияют на то что окно после обработки ошибки сразу закрывается?
0
 Аватар для Kastaneda
5232 / 3205 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
06.04.2015, 16:05
Лучший ответ Сообщение было отмечено daert как решение

Решение

Цитата Сообщение от daert Посмотреть сообщение
но разве оставшиеся в буфере ввода символы влияют на то что окно после обработки ошибки сразу закрывается?
Да, когда дело доходит до выполнения
C++
1
cin >> ch;
в буфере ввода уже есть данные, которые сразу считываются. Поэтому пользователь не успевает ничего ввести.

Добавлено через 2 минуты
Попробуй после cin.clear() еще cin.sync() вызвать. Правда реализация sync() зависит от платформы и на Linux'е она себя по-другому ведет. Но на винде работает. Еще можно cin.ignore() использовать.
1
3 / 2 / 3
Регистрация: 09.05.2014
Сообщений: 64
06.04.2015, 23:14  [ТС]
Цитата Сообщение от Kastaneda Посмотреть сообщение
Попробуй после cin.clear() еще cin.sync() вызвать. Правда реализация sync() зависит от платформы и на Linux'е она себя по-другому ведет. Но на винде работает. Еще можно cin.ignore() использовать.
помогло, кроме этого я забыл что после обработки ошибки программа сразу завершается, и не возвращается в main
0
11 / 11 / 5
Регистрация: 01.04.2015
Сообщений: 120
07.04.2015, 10:39
Благодарю , просветили
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
07.04.2015, 10:39
Помогаю со студенческими работами здесь

Закрывается окно после выполнения задачи
Короче, когда программа подходит до элемента вычисления то окно автоматом закрывается. Как отключить?

Программа закрывается сразу после выполнения
После написания кода программа выполняется и сразу закрывается. Как это исправить?

Консоль закрывается сразу же после выполнения POST-запроса
Не очень понимаю, что происходит. Мне нужно создать вебхук chat2desk. Пишу POST-запрос. Мало того, что он не выполняется, так еще и после...

Программа все считает, но после выполнения сразу же закрывается
Программа все считает, но после выполнения сразу же закрывается. Помогите, чтобы не закрывалась после выполнения function f(x:real;...

Окно программы закрывается сразу же после отработки
После запуска проекта окно с результатом открывается на секунду и сразу же закрывается. Как быть? Вот код: implement main ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru