CString to int - hää?



  • Hallo, eigentlich weiss ich ja wie man einen CString in einen Int wandelt:

    CString sVal = "5";
    int iVal = -1;
    
    sscanf(sVal, "%d", &iVal);
    
    // iVal ist nun 5
    

    Das geht..

    Jetzt ist es so: Ich hab ein String, und möchte von jedem Zeichen den Int Wert. Also mache ich das doch so:

    CString str = "Das ist mein Text";
    
    for(int i=0; i<str.GetLength(); i++){
     int iVal = -1;
    
     const char* pChar = (const char*) str.GetAt(i); // geht nicht
     sscanf(pChar, "%d", &iVal);  // geht nicht
    
     CString s = str.GetAt(i); // geht auch nicht
     const char* pChar2 = s.GetBuffer(1);// geht auch nicht
    sscanf(pChar2, "%d", &iVal);  // geht nicht
    }
    

    Na um himmels willen. Ist das denn so schwer? Ich kriegs einfach nicht hin... Dachte ich hätte mal eine methode 'toI' gesehen, aber die MSDN finded nix schlaues unter diesem Suchbegriff - thanks so much for your help!



  • atoi, atol, atof



  • estartu_de schrieb:

    atoi, atol, atof

    ah ja danke für den Hinweis. Trotzdem. es geht nicht, wenn man aus einem String mittels 'for-Sschleife' jedes einzelne Zeichen konvertieren will.

    Aber was geht ist nun das Folgende:

    CString str = "das ist mein Text";
    
      for(int i=0; i<str.GetLength(); i++){
        int iVal = -1;
        iVal = str.GetAt(i);
      }
    

    Wäre eigentlich sehr einfach gewesen.



  • Nene, das kompiliert zwar, funktioniert aber nicht!

    Du bekommst da die Stelle im Ascii-Code einer 2 (z.b.) und nicht 2.
    Debugge es mal, du wirst sehen. 🙂

    Nimm bitte atoi, das geht normalerweise.

    iVal = atoi(str.GetAt(i));
    

    Und warum willst du jedes Zeichen einzeln? Naja, der komplette String hätte auch funktionieren müssen, wenn es eine gültige Zahl ist.



  • sky21 schrieb:

    Hallo, eigentlich weiss ich ja wie man einen CString in einen Int wandelt:

    CString sVal = "5";
    int iVal = -1;
    
    sscanf(sVal, "%d", &iVal);
    
    // iVal ist nun 5
    

    Eigentlich hast du es nicht gewusst.



  • estartu_de schrieb:

    Nene, das kompiliert zwar, funktioniert aber nicht!

    Du bekommst da die Stelle im Ascii-Code einer 2 (z.b.) und nicht 2.
    Debugge es mal, du wirst sehen. 🙂

    Nimm bitte atoi, das geht normalerweise.

    iVal = atoi(str.GetAt(i));
    

    Und warum willst du jedes Zeichen einzeln? Naja, der komplette String hätte auch funktionieren müssen, wenn es eine gültige Zahl ist.

    Richtig, wenn es eine gültige Zahl wäre, dann ginge es auch.

    Mir genügt der ASCII Wert. Ich muss eben jedes Zeichen mit einer Zahl EXOR verknüpfen. Daher benötige ich jedes einzelne Zeichen.



  • Unix-Tom schrieb:

    sky21 schrieb:

    Hallo, eigentlich weiss ich ja wie man einen CString in einen Int wandelt:

    CString sVal = "5";
    int iVal = -1;
    
    sscanf(sVal, "%d", &iVal);
    
    // iVal ist nun 5
    

    Eigentlich hast du es nicht gewusst.

    Wieso nicht? wenn 'sVal' eine gültige Zahl hat funktioniert es wunderbar. 👍



  • Ah, du wolltest den Ascii-Wert. Ja, dann ist das was du hast korrekt. 🙂
    Sorry, normalerweise werden solche Fragen gestellt, wenn man aus "123" 123 machen will.


Anmelden zum Antworten