Ciao!
Provo a spiegarmi meglio: sto lavorando con un'interfaccia grafica, quindi tutti gli "eventi" (ad es. un tasto schiacciato sulla tastiera) per ora li ho gestiti attraverso funzioni di freeglut. Un esempio di questo è quando schiaccio un tasto da tastiera:
void interface::keyPressed (unsigned char key, int x, int y) //METHOD: keyPRESSED
{
keyStates[key] = true; // Set the state of the current key to pressed
}
questa è la funzione che gestisce la chiamata, e per ora l'ho usata in un questo modo:
if(keyStates['a']==true) launch();
Posso sia esplicitare il carattere che il codice ASCII (es. '13' se voglio "enter").
Il problema è che ora non devo più assegnare ad un tasto una funzione specifica, devo far sì che se un tasto qualsiasi è schiacciato il suo carattere venga immagazzinato in una std::string (non penso di poter fare getchar o cin.get perchè non digito su terminale). In pratica la mia finestra grafica chiede di digitare sulla finestra il nome del file da salvare/caricare per poi fare la fstream. In parole povere, voglio fare il salvataggio/caricamento di un file non da terminale ma da finestra grafica.
Potrei fare un ciclo con un contatore che mi passa tutti i vari ASCII che mi interessano (caratteri alfanumerici+ segni di interpunzione "banali"), come:
for(int i=valore iniziale, i=valore finale, i++){
if(keyStates[i]==true) do_something(); //salva nella stringa;
}
In alternativa, c'è una funzione propria del c++ (oppure di freeglut/opengl) che restituisca automaticamente il codice ASCII di un tasto EVENTUALMENTE premuto, senza bisogno che la scriva io con il metodo del ciclo?
Capisco che prima posso non essermi espresso bene, spero che così sia più chiaro
Grazie ancora per il tuo interessamento!