Chodzi Tobie o to by program jakkolwiek zareagował na wpisaną komendę dopiero po wciśnięciu enter? Być może są na to jakieś prostsze sposoby, lecz sam jakiś czas temu potrzebowałem takiego rozwiązania i udało mi się stworzyć taki system, który reaguje na komendy dopiero wówczas gdy zostanie wciśnięty enter.
Run-Time UI Console
W Console .cpp masz taki konstruktor a w nim przykładowe wgranie komendy
Console::Console()
{
functionDataBase.emplace( "help", &Console::help );
}
W cudzysłów wpisujesz pierwszą frazę tekstu, na który ma reagować konsola. "&Console::help" to wskazanie funkcji, która ma się wywołać. Potem masz jeszcze przykładową metodę niżej:
/*EXAMPLE OF USE*/
/*
* Write "test all" in console to use example
*/
void Console::help( std::vector<std::string>& suffixes )
{
Corrector corrector;
if ( corrector.checkTypeCompatibility( std::vector<size_t>{
typeid(std::string).hash_code()},
suffixes, 1 ) )
{
Printer printer;
if ( suffixes[0] == "all" )
{
printer.print( "help.txt", Printer::mode_t::DEFAULT );
return;
}
printer.print( "source/printer/instructions/help.txt", Printer::mode_t::DEFAULT ) ;
}
}
która sprawdza czy dodatkowe argumenty się zgadzają (ich typy i ewentualnie wartości).
I jeszcze dwie linijki w mainie by rozpocząć pracę konsoli:
Console console;
console.startWork();
Po tym, dopóki program działa, będzie chodziła obsługa komend bez zatrzymywania programu.
Na bazie tej wiedzy możesz szybko zbudować analogiczne metody, które będą obsługiwały inne "komendy"
W razie pytań pisz ;)