CString um einen Wert erhöhen



  • Hallo zusammen,

    also ich habe in einem CString einen Zahlenwert stehen.

    dieser Zahlenwert, soll in einer Schleife danach immer um 1 erhöht werden.
    Diesen erhöhten Wert, brauche ich danach aber unmittelbar wieder als CString, wie macht man das am besten.

    mit der Funktion atoi() ist es ja kein Ding da eine Zahl draus zu machen, aber danach wieder einen CString daraus zu machen finde ich mit itoa() doch recht kompliziert, zumal ich mir nur ungern vorher ein char-Array anlegen mag.

    Geht das nciht intelligenter und schöner ?



  • Wie wäre es damit:

    for (int i = 0; i < 10; i++)
    {
        CString strZahl;
        strZahl.Format("%d", i);
        AfxMessageBox(strZahl);
    }
    


  • das kan ich jetzt aber nciht nachvollziehen.

    Also bsp.: Am Afang ist CString Text mit 100 gefüllt.

    so nun will ich in ner Schleife immer eins dazu addieren, so dass da auch 101,102,103,104,105 drin ist.
    Das soll dann halt jeweils nach erhöhung als CString vorliegen weil ich diesen CString dann zwischen anderen CString bauen muß, verstanden ? 😕



  • Du kannst einen String nicht in einer Schleife erhöhen. Du bist gezwungen draus ein int, long, double oder was auch immer zu machen. Dann erhöhst du diesen int wert die ganze Zeit und wenn du fertig bist mit der Schleife wandelst du es wieder in deinen CString um. Also so:

    CString zahl    = "100";
    int     zahlInt = atoi(zahl);
    
    for(zahlInt; zahlInt < 120; zahlInt++)
    {
        //Mach was...
    }
    
    zahl.Format("%i", zahlInt);
    

    Einfacher geht es, soweit ich weiss, nicht...



  • BAR schrieb:

    Du kannst einen String nicht in einer Schleife erhöhen. Du bist gezwungen draus ein int, long, double oder was auch immer zu machen. Dann erhöhst du diesen int wert die ganze Zeit und wenn du fertig bist mit der Schleife wandelst du es wieder in deinen CString um. Also so:

    CString zahl    = "100";
    int     zahlInt = atoi(zahl);
    
    for(zahlInt = 0; zahlInt < 120; zahlInt++)
    {
        //Mach was...
    }
    
    zahl.Format("%i", zahlInt);
    

    Einfacher geht es, soweit ich weiss, nicht...

    Zuerst weist du zahlInt den int-Wert 100 zu, dann den Wert 0, dann erhöhst du den Wert auf 119 und dann wandelst du die 119 wieder in einen CString um...



  • Ach so ja, das = 0 brauchts nicht. Ich hab mich irgendwie dran gewöhnt dem Wert immer auf 0 zu setzten weil ich Schleifen meistens immer von 0 anfange...

    Habs editiert, jetzt sollte es stimmen. Er will ja erhöhen bis zu einem gewissen Wert (das 120 ist nur n Beispiel) und dann das erhöhte wieder in CString umwandeln oder verstehe ich was falsch?



  • Ist schon OK, aber er will ja immer um 1 erhöhen und dann damit etwas machen. Da würde ich doch den Format-Befehl IN die Schleife packen und nicht dahinter oder verstehe ich was falsch ?



  • Ja dann soll er den Formatbefehl einfach in die Schleife reinkopieren 😋 😉

    Es geht ja nur darum zu sagen wie man es überhaupt machen KÖNNTE, die Details macht er dann schon selber...



  • Wie kommt der Wert in den CString ?
    Bei Editboxen kannst du die membervar auch als int oder float oder double einstellen.



  • Wie kommt der Wert in den CString ?

    Hab ich ja oben geschrieben? Oder meinst du was anderes? Du kannst einen Wert in CString "umformatieren" indem du Format() benutzt...


Anmelden zum Antworten