Konvertierung String to Integer



  • Hallo, ich schaffe es nicht meinen String in Integer zu verwandeln:

    #define max 255 
    
    char *buffer = new char [max];
    
    SendMessage (hwndEdit2, WM_GETTEXT, max, (LPARAM) buffer);
    istringstream buffer2(buffer);
    int some_int;
    buffer2 >> some_int;
    
    MessageBox(hwnd,buffer, "bla", MB_OK);
    

    buffer ist der Text im Edit-Feld,
    buffer2 ist halt derselbe, nur dass das dieser ein String ist und in ein Integer verwandelt werden soll.

    Folgendefehlermeldungen

    main.cpp:132: error: jump to case label
    main.cpp:121: error: crosses initialization of std::istringstream buffer2' main.cpp:132: warning: destructor needed forbuffer2'
    main.cpp:132: warning: where case label appears here
    main.cpp:132: warning: (enclose actions of previous case statements requiring destructors in their own scope.)
    main.cpp:149:2: warning: no newline at end of file
    Process terminated with status 1 (0 minutes, 2 seconds)
    2 errors, 4 warnings

    kann mir jemand helfen? wäre echt nett..
    dankeschön
    viele grüße 😉



  • Wenn der Code aus einem switch-case stammt, dann verpass ihm bitte einen Block:

    switch( /* ... */ ) {
    
        case 1: {
    
            /* dein code */
            break;
        }
    }
    

    Dein compiler schrieb:

    main.cpp:149:2: warning: no newline at end of file

    mein.cpp öffnen, strg+end, return.

    greetz, Swordfish



  • ja stimmt, danke für die schnelle Antwort 🙂

    weiteres Problem, wenn der User nun allerdings ein Text eingibt, statt eines Integers, stürtzt das Programm ab:

    istringstream buffer2(buffer);
    int some_int;
    buffer2 >> some_int; 
    Sleep(some_int*1000);
    


  • Solche Fehler mußt du natürlich auch abfangen anstatt sie zu ignorieren:

    istringstream buffer2(buffer);
    int some_int;
    buffer2 >> some_int;
    if(!buffer)
    {
      MessageBox(0,"Falsche Eingabe","Sie müssen schon eine Zahl eingeben",MB_OK);
      return;
    }
    Sleep(some_int*1000);
    


  • Wenn es eine normale Editbox ist, dann gibt es ein Style der festlegt das nur Nummern eingegeben werden dürfen. Ich glaube das war ES_NUMBER oder so musst mal schauen.

    schirrmie



  • CStoll schrieb:

    Solche Fehler mußt du natürlich auch abfangen anstatt sie zu

    deshalb frage ich ja, vielen lieben Dank, klappt super.
    Danke euch beiden. 😃


Anmelden zum Antworten