Buonasera. Dovrei modificare questo programma controllando l’input anche con il backspace. Ho provato a farlo mettendo una condizione sull’input che appena si digita il backspace su tastiera si fa una stampa del puntatore che va indietro di uno, sovrascrive con uno spazio e si sposta nuovamente di uno come notate nel codice quando faccio: cout<<(“/b /b”)
Il problema è che fa soltanto in parte cio che richiedo, perche non mi elimina effettivamente il carattere dalla memoria ( ma nella stampa a video sembra eliminarlo) Infatti poi quando mi viene stampato il numero letto viene riportato anche quello che ho eliminato con il backspace... sapere aiutarmi? Vi lascio qui il codice
[CODE]
#include <iostream>
#include <conio.h>
#include <string>
using namespace std;
void leggi(string outstr,int& dato,char& car, bool crlf);
//
main() {
int datoin;
char car;
leggi("inserisci un numero intero -> ",datoin,car,true);
cout << "numero letto -> " << datoin;
}
void leggi(string outstr, int& num, char& car, bool crlf_flag)
{
cout << outstr;
num=0;
do
{
car=getch();
if (car>='0' and car<='9' ) { //sono accettati numeri da 0 a 9
putch(car);
num=num*10+car-48;
}
else if (car==8)
cout<< "\b \b";
} while (car!=13 and car!=27); // 13==invio 27==esc
if (crlf_flag and car==13) {
putch(car);
putch(10);
}
}