Stringproblem



  • Moin!

    Hab mit meinen Prog folgende Probs... 😞
    Ich lese mit mein Prog Werte aus einer *.ini Datei aus (mittels GetPrivateProfileString) dadurch erhalte ich einen "Multistring" der etwa so aussieht:
    1. Element: 0x30 '0'
    2. Element: 0x30 '0'
    3. Element: 0x20 ' ' <- Endekennung
    4. Element: 0x41 'A'
    5. Element: 0x34 '4'
    6. Element: 0x20 ' ' <- Endekennung
    7. Element: 0x30 '0'
    ...

    Nun meine Wissenslücke:
    Wie kann ich diesen String in einzelne Teilstrings zerlegen? Die normalen Stringfunktionen sind ja nicht gültig da diese ja nach der ersten Endekennung aufhören!
    Noch was wichtiges:
    In den Multistring stehen ja ASCII Zeichen ein einen anderen String steht das gleiche nur nich ASCII sondern HEX! wie kann ich die ASCII zeichen in Hex-Werte umwandeln? 😞

    naj0 bestimmt seid ihr nich so amateure wie ich und könnt mir weiterhelfen 😃
    mfg
    micha



  • zum zerlegen gibts viele möglichkeiten..
    Ich persönliche verwende dafür am liebsten strtok weils ziemlich universell einsetzbar ist...

    um deine hexzahlen umzuwandeln sollte dir sscanf helfen...



  • strtok hab ich schon versucht geht nicht da es nur bis zur ersten endekennung lest! sscanf würde dann evtl. nur gehn wenn der string schon zerlegt ist!

    hmm wird mir wohl nichts anders übrig bleiben als den string von hand byte für byte zu zerlegen...

    hab schon alles ausprobiert was ich so gewusst hab



  • Versuchs doch mal mit boost::tokenizer.

    www.boost.org

    mfg JJ



  • strtok hab ich schon versucht geht nicht da es nur bis zur ersten endekennung lest!

    quatsch das funzt wunderbar...
    das msdn-beispiel kann man ja schon fast 1:1 übernehmen

    #include <string.h>
    #include <stdio.h>
    
    char string[] = "A string\tof ,,tokens\nand some  more tokens";
    char seps[]   = " ,\t\n";
    char *token;
    
    void main( void )
    {
       printf( "%s\n\nTokens:\n", string );
       /* Establish string and get the first token: */
       token = strtok( string, seps );
       while( token != NULL )
       {
          /* While there are tokens in "string" */
          printf( " %s\n", token );
          /* Get next token: */
          token = strtok( NULL, seps );
       }
    }
    


  • Was du hier als Endkennung bezeichnest ist ein normales Leerzeichen ...
    Da funktioniert CString doch wunderbar mit ...



  • strtok geht nicht!

    die endekennung is ein \0 da macht dann strtok nicht weiter!



  • die endekennung is ein \0 da macht dann strtok nicht weiter!
    naja wie überraschend... genau dieses zeichen terminiert ja auch nen string...
    vielleicht solltest du dir da was anderes als trennzeichen überlegen als ausgerechnet das Nullbyte...



  • Mich0r schrieb:

    1. Element: 0x30 '0'
    2. Element: 0x30 '0'
    3. Element: 0x20 ' ' <- Endekennung
    4. Element: 0x41 'A'
    5. Element: 0x34 '4'
    6. Element: 0x20 ' ' <- Endekennung
    7. Element: 0x30 '0'

    WO bitte ist hier ein \0 ??



  • Hi,

    die von dir verwendeten Trennzeichen sind, wie dEUs schon sagte, keine '\0'en.

    Wenn du dich trotzdem entscheiden solltest '\0' als Trennzeichen zu verwenden, solltest du einmal bei Codeguru/Codeprojekt vorbeischauen. In einem dieser Archive habe ich einmal eine Klasse gefunden, die derartige Strings verarbeiten kann.
    Allerdings würde ich dir ein anderes Trennzeichen empfehlen.

    Grüße Rapha



  • Hi,

    die von dir verwendeten Trennzeichen sind, wie dEUs schon sagte, keine '\0'en.

    Wenn du dich trotzdem entscheiden solltest '\0' als Trennzeichen zu verwenden, solltest du einmal bei Codeguru/Codeprojekt vorbeischauen. In einem dieser Archive habe ich einmal eine Klasse gefunden, die derartige Strings verarbeiten kann.
    Allerdings würde ich dir ein anderes Trennzeichen empfehlen.

    Grüße Rapha



  • Dieser verdammte Mediawaysbackbone 😡
    Mein IE spinnt total


Anmelden zum Antworten