Chwile poszukałem w sieci jak to zrobić aby działało na większej ilości platform z użyciem tylko biblioteki standardowej i znalazłem sugestię że można to zrobić przy pomocy wątków.
Z ciekawości napisałem coś takiego:
#include <iostream>
#include <future>
#include <thread>
void waitForEndChar() {
std::string buffer;
do {
std::getline(std::cin, buffer);
} while (!buffer.empty());
}
int main() {
using namespace std::chrono_literals;
std::future<void> future = std::async(waitForEndChar);
do {
std::cout << "TEST\n";
std::this_thread::sleep_for(2s);
} while (future.wait_for(0s) != std::future_status::ready);
std::cout << "END";
}
Ale szczerze mówiąc odradzał bym użycie tego, nie wiem na ile to jest bezpieczne.
Według mnie sugestia @MarekR22 aby użyć ncurses
będzie najlepsza.
Sprawa też będzie odrobinę inaczej wyglądała jeśli ograniczasz swój kod do specyficznych platform, wtedy możesz w ich API znaleźć odpowiednie funkcje.