bool stop = false;
int hours = 0;
int minutes = 0;
int seconds = 0;
while (stop == false)
{
system("cls");
cout << "Hours Minutes Seconds\n";
cout << hours << " " << minutes << " " << seconds << endl;
Sleep(1000);
seconds++;
if (seconds == 60)
{
minutes++;
if (minutes == 60)
{
hours++;
minutes = 0;
}
seconds = 0;
}
}
Я хочу каким-то образом выйти из цикла while, но единственный способ, который я могу придумать, - это запросить ввод данных пользователем, но я не могу этого сделать, потому что это испортит секундомер.
Либо установите для условия цикла значение false, либо рассмотрите en.cppreference.com/w/cpp/language/break
каким-то образом, но единственный способ, который я могу придумать, - это запросить пользовательский ввод. Вам может понадобиться какой-то API ОС для этого, если вы хотите, чтобы он вышел из цикла, когда пользователь нажимает пробел или что-то в этом роде. Связанный: https://stackoverflow.com/questions/421860/capture-characters-from-standard-input-without-waiting-for-enter-to-be-pressed
Поскольку вы используете Windows, вы можете использовать _kbhit.
Эта программа представляет собой секундомер, мне нужно завершить цикл после ввода данных пользователем, я пробовал kbhit и getch, но они не сработали, можете ли вы показать мне, как это можно сделать?
Изменить while (stop == false) {
на while(!_kbhit()) {
Большое спасибо!
bool stop = false;
int hours = 0;
int minutes = 0;
int seconds = 0;
while (!_kbhit())
{
system("cls");
cout << "Hours Minutes Seconds\n";
cout << hours << " " << minutes << " " << seconds << endl;
Sleep(1000);
seconds++;
if (seconds == 60)
{
minutes++;
if (minutes == 60)
{
hours++;
minutes = 0;
}
seconds = 0;
}
}
Какова цель программы?