getch() und in string einfügen nur wie ?



  • hi schon wieder ne lamer frage... find die antwort aber nicht wirklich *g*

    using namespace std;
    
    int main()
    {
        int merke=0;
        string str1="";
    
        merke=getch();
        str1.insert(0,merke); // funktioniert nicht [invalid convert from int to 
                              // const char] hehe war mir vorher schon klar.....
    
        str1.insert(0,"q");   // würde ein Q einfügen....
        str1.insert(0,"113"); // würde 113 (den rückgabewert von getch() bei     
                              // tastendruck von q
    
        system("pause");
    }
    

    so... jezt meine frage...: Wie kann ich es erreichen das beim tastendruck irgendeiner taste das entsprechende zeichen in einen string eingefügt wird ?
    irgendwie muss ich doch warscheinlich int in char convertieren oder so oder ?
    irgendwer erzähle mir mal sowas mit hex codes die dann umgewandelt wurden...
    irgendwer wieder ne nette idee für mich ?



  • insert() kann nur char's (einzelne Zeichen) oder Strings (Zeichenketten) verarbeiten. getch() liefert aber einen int-Wert (der entweder ein Zeichen oder EOF sein kann), also mußt du den Wert passend konvertieren:

    int wert=getch();
    str.insert(0,(char)wert);
    


  • int wert=getch(); 
    str.insert(0,(char)wert);
    

    also wenn ich stur so eingebe hab ich genau das selbe warning....
    also wie könnte ich das machen ohne 1000 werte vorzudefinieren ?(einfach den wert konvertieren ?nur wie ?)

    int wert=getch(); 
    str.insert(0,convertierter wert von wert);// Nur wie ?
    

    wirklich keine ahnung....

    Mfg Baltur



  • Sorry, Kommando zurück - string hat ja gar kein insert() für einzelne Zeichen, aber dafür für n gleiche Zeichen. Und den müsstest du hier verwenden:

    str.insert(0/*Position*/,1/*Anzahl*/,wert);
    


  • genau das wollte ich Herzlichen Dank !!!!

    MfG Baltur



  • Es gibt schon ein insert für ein einzelnes Zeichen. Die Iteratorversion von insert.

    str.insert(str.begin()/*Position*/,wert);
    

Anmelden zum Antworten