C++ ввод без останвки программы и не надо использовать нейросеть это калл - Вопросы по С+
  • Чаты 4chT.com в телеграмм
    Наши группы в телеграмм

Вопрос C++ ввод без останвки программы и не надо использовать нейросеть это калл

Регистрация
25 Дек 2013
Сообщения
78
Репутация
0
Спасибо
0
Монет
0
Я хочу чтобы код работал и я в любой момент мог нажать клавишу и чтото происходило типо getch() ; останавливает программу в ожидании нажатия а мне надо без ожидания
 
Регистрация
21 Июн 2013
Сообщения
87
Репутация
0
Спасибо
0
Монет
0
Это для винды... для линуха посложнее, но можно нахлобучить кроссплатовые библы

#include
#include

void process() {
std::cout
 
Регистрация
28 Фев 2013
Сообщения
77
Репутация
0
Спасибо
1
Монет
0
Строго по вопросу - см. код выше от г-на Вистастера, он простой и красивый.
Вопрос в другом: а зачем? Что делает твоя программа без введенных данных, чем она занята?
В современном мире консольные приложения вообще не принято делать интерактивными. Хочешь сложной интеракции - пиши оконное. А черные окна рядового пользователя приводят в ужас, не надо это. А нерядовому интерактивность тоже не очень нужна - он вполне способен задать все необходимые параметры в командной строке и адью.
Поэтому, если тебе надо просто поиграться - на здоровье. А если ты там ваяешь что-то серьезное, то такой подход изначально ущербен.
 
Регистрация
5 Июн 2013
Сообщения
70
Репутация
0
Спасибо
0
Монет
0
Э, братан, ща разрулим твой движок. Короче, если тебе надо, чтобы прога чекала клавиши на ходу, и не стопорилась как getch(), тебе в натуре надо юзать кое-что по-хитрому. Для таких дел есть, короче, функция `kbhit()` из библиотеки `<conio.h>`, она как раз чекнет, нажата ли клавиша. Ну и если чо, можно потом спокойно `getch()` юзать, чтобы эту клавишу считать, но без тормозов, понял?

Вот тебе пример, как это можно замутить:

```cpp
#include <iostream>
#include <conio.h> // для kbhit() и getch()
using namespace std;

int main() {
while (true) {
// Чекаем, есть ли нажатие клавиши
if (_kbhit()) {
char ch = _getch(); // Считываем нажатую клавишу
cout << "Ты нажал: " << ch << endl;

// Типа если нажал 'q', то выходим
if (ch == 'q') {
cout << "Выхожу из проги. Давай, удачи!" << endl;
break;
}
}

// Делаем какое-то другое дело, пока не нажата клавиша
cout << "Работаю, не отвлекаюсь, бро..." << endl;
}

return 0;
}
```

Короче, вот это `while(true)` будет крутиться вечно, и как только клаву нажмешь, сразу `if (_kbhit())` это дело спалит и обработает, че там за кнопка. Прикинь, ни на какой кнопке не зависает, просто на ходу работает. Вот такой движок, понял?

Так что делай движ, брат, и если что — обращайся!
 
Регистрация
10 Июл 2013
Сообщения
97
Репутация
0
Спасибо
0
Монет
0
#include <iostream>
#include <conio.h>
#include <thread>
#include <chrono>

int main() {
std::cout << "Программа запущена. Нажмите любую клавишу для завершения...\n";

// Запускаем поток ожидания нажатия клавиши
std::thread([&]() {
while (true) {
if (_kbhit()) { // Проверяем, нажата ли клавиша
char ch = _getch(); // Читаем клавишу
std::cout << "Вы нажали: " << ch << "\n";
break; // Выходим из цикла
}
std::this_thread::sleep_for(std::chrono::milliseconds(100)); // Немного ждем
}
}).detach(); // Запускаем поток в фоновом режиме

// Основной цикл программы
while (true) {
// Здесь может быть код вашей программы
std::this_thread::sleep_for(std::chrono::milliseconds(500)); // Эмуляция работы
std::cout << "Программа продолжается...\n";
}

return 0;
}
 

Похожие темы

Сверху Снизу