Итак, я хочу помочь другу с проектом, и ему нужно что-то, чтобы издавать звук при каждом нажатии клавиши. Он читает данные как целочисленные значения, используя std :: cin, и мне интересно, можно ли каким-либо образом создать функцию, которая не будет модифицировать остальную часть его проекта, используя многопоточность или перегрузку каким-либо образом оператором istream >>, чтобы он издал звуковой сигнал звук при каждом нажатии клавиши.
Я попробовал это, и я понимаю, что концепция перегрузки, вероятно, плохая, и что я, вероятно, не понимаю, как работает многопоточность, но не могли бы вы порекомендовать некоторые статьи, чтобы я мог научиться решать такого рода проблемы? Может быть, обработка событий в C ++, но я не сделал Ничего общего, только обработка событий в игровых рамках. Может быть, несколько советов?
Вот мое оправдание кода:
#include <iostream>
#include <thread>
#include <string>
#include <conio.h>
#include <windows.h>
using namespace std;
//compile error very bad
istream& operator>>(istream& in, int& n)
{
int i=0;
char c;
string nr;
nr.resize(30);
do{
c = getch();
if(c >= '0' && c<= '9' && i < 30)
{
cout<<c;
Beep(1000, 10);
nr[i++] = c;
}
if(c == '\b')
{
i--;
cout<<"\b \b";
}
}while(int(c) != 13);
//maybe like this and return void?
n = stoi(nr);
//or like this? even tho makes no sense to me that it would work?
return in>>stoi(nr);
}
void playBeep()
{
while(getch())
{
Beep(1000, 10);
}
}
int main()
{
//maybe this?
thred t(playBeep);
t.join();
//or this with the operator overload somehow?
int arr[10];
for(int i=0; i<10;i++)
cin>>arr[i];
return 0;
}