Hallo erstmal!

Ich weiß, ein merkwürdiger Titel, aber ich weiß einfach nicht wie ich es anderes ausdrücken soll. Ich bin am verzweifeln. Google ergab auch nichts.

Mein Problem: Ich schreibe gerade eine Klasse, die Usereingaben verwertet. Momentan sitze ich an einem Userinput. Die Grundstruktur steht.. und funktionieren tut sie auch so halbwegs, allerdings habe ich ein Problem: Drücke ich die backspace Taste, wird der String einfach nicht überschrieben, sondern einfach nur der Zeiger innerhalb des Strings um eine Stelle nach hinten versetzt. Das .. nervt. Und es ist einfach blöde. Ich fände es nett, wenn ihr mir helfen könntet. Hier der Code:


Code:
string input::userinput(int passchar = 0) {
  cout<<"Bitte geben sie hier iher gewuenschten Werte ein:"<<endl;
  
  int currentkeyvalue;
  string currentstring;
  int end = 0;
  
  while(end != 1) {       //Solange end != 1 ;D
    if(kbhit())               //Wird eine Taste gedrückt?
    {
      currentkeyvalue = getch();          //Aktuellen Keywert in currentkeyvalue schreiben
      
      if(currentkeyvalue == 13) { //Return
        end = 1;
      }
      else if(currentkeyvalue == 8) //Backspace
      {
        currentstring = currentstring.substr(0, currentstring.length()-1);
      }
      else
      {
        currentstring += currentkeyvalue;
      }
      
      currentkeyvalue = 0;
      cout<<"\r"<<(string) currentstring<<"\r";    
    } 
   
  } 

   return (string) currentstring;           
}