ausnullen



  • Hi!

    Ich hab grad ne kleine Denkblockade und vielleicht kann mir jemand kurz helfen.

    Ich habe Strings mit verschiedenen Längen (1-8 Zeichen). Der String soll aber IMMER 8 Zeichen lang sein und wenn er kürzer ist sollen hinten soweit Zeichen("0") angehängt werden bis er diese Länge erreicht.

    Wer weiß wies geht? 🙂



  • Woher weißt du wie lang der String ist?

    for (size_t i=laenge; i<8; ++i) {
       dasFeld[i] = 0;
    }
    


  • Na das sind die Ergebnisse einer Berechnung...in Hexform aber als String.

    Bsp.: 1.Ergebnis 5DC00 ---> += "000"
    2.Ergebnis 4F ---> += "000000"

    So in etwa...



  • Das hat damit zu tun, dass ich den Wert in 4*2 Blöcken auf einen EEPROM schicken will. Und der Formalismus verlangt eben solches...Kommunikation is fertig aber mit den blöden Stringrumgebaue habsch so meine Probleme. Ich will mir halt aus der einfachen Zahl die Befehlskette zusammenbasteln..



  • schau dir lieber mal die Spezifikationen fuer sprintf(snprintf,_snprintf unter windows) an ...

    char strTest[9]; 
    unsigned int iTest = 0xABC;
    _snprintf(strTest,9,"%8.8X",iTest);
    

    Iss vielleicht schon das was du suchst ...

    Ciao ...



  • String Ströme



  • @RHBaum

    Halt dich ma nich an den Hexzahlen fest...das hab ich schon längst erledigt.
    Es geht nur darum die Strings in eine einheitliche Länge zu bringen.



  • Ah, du willst '0' und nicht 0. OK.
    [cpp]
    for (size_t i=laenge; i<8; ++i) {
    dasFeld[i] = '0';
    }
    dasFeld[8] = '\0';
    [cpp]

    laenge entspricht der bisherigen Stringlänge



  • Es geht nur darum die Strings in eine einheitliche Länge zu bringen.

    Naja, ich wuerd halt versuchen, die strings von anfang an in der lanege zu halten , wenn du richtig naerrich drauf bist,koenntest gar ne eigene klasse fuer schreiben ...

    Um schnell strings aufzufuellen ohne ne schleife zu nutzen, kannst memset verwenden ala,

    char buffer[9];
    strcpy(buffer,"123");
    memset(&buffer[3],'0',sizeof(char) * 5);
    buffer[8] = 0;
    

    funzt dann aber nur so mit 1 byte grossen zeichensatz, fuer unicode musst dir was anderes einfallen lassen ...

    Ciao ...



  • std::ostringstream output;
    output << std::setw(8) << std::setfill('0') << std::left << "Hallo";
    


  • So danke an alle...

    Ich machs jetzt mit GetLength() und str.Insert. Dat is mir jetzt das einfachste für meinen Fall...

    🙂 🙂


Anmelden zum Antworten