textdateien einlesen



  • Nach verzweifelter Suche und stundendemlangen durchprobieren bin ich nun doch hier gelandet und muss diese schon tausendmal gestellte Frage erneut stellen:

    Ich hab eine Textdatei mit dem Inhalt:

    text1,text2
    23,45,6

    Diese Werte möchte ich jetzt eigentlich ganz einfach in 5 Variablen Speicher(2 string, 3 int)

    Wie geht das?

    so z.B. bisher nicht:

    CString t1,t2;
    int i1,i2,i3;

    FILE *datei;
    datei=fopen("text.txt","r");

    fscanf(datei,%t1,%t2);
    fscanf(datei,%i1,%i2,%i3);
    //muss irgendwie so ähnlich gehen 😕

    //die Anzahl der Variablen ist fest(deren Länge nicht), deshalb würde ich gerne auf eof()verzichten falls möglich
    fclose;

    Ich hab auch schon mit ifstream und ReadString() usw. probiert, aber nie hat der das gemacht, was ich wollte, ich weiß bald nicht mehr weiter
    Anstelle von den Semikolons würden auch andere Trennzeichen gehen, aber ist eigentlich praktisch, wenn gehen würde 😡

    Was ist eigentlich der Unterschied zwischwen CString und string?



  • Wenn ich das richtig verstanden habe sucht du sowas:

    AfxExtractSubString(strTo,strFrom, Teil, '|');
    

    Hier bei ist strTo dein String wo was dringespeichert wird, strFrom dein Source string (den du mit Read einliest), Teil der Teil den du haben willst (Bei 1;2;3;4 ist teil=2 zb '3' (da von 0 Anfangen)) und das | ist das Trennzeichen (; oder , oder was du willst)



  • naja also wenn in der txt immer
    eine zeile string dann eine zeile int

    dann ist dies einfach

    lese die komplette akt. zeile ein.

    z.b. ist dann file_line = text1,text2

    dann suche komma nimm vor komma setze in deine stringvariable1

    nach dem komma in stringvariable2

    dann next line

    file_line = 22,33,44

    suche wieder die 3 teilstrings mit jeweils ( 22 33 44 )

    dann wandle einfach die ( noch ) 3 "int" strings in richtige um

    musst halt in der msdn schauen, aber weil du es bist

    int main( void )
    {
       char *s; double x; int i; long l;
    
       s = "  -2309.12E-15";    /* Test of atof */
       x = atof( s );
       printf( "atof test: \"%s\"; float:  %e\n", s, x );
    
       s = "7.8912654773d210";  /* Test of atof */
       x = atof( s );
       printf( "atof test: \"%s\"; float:  %e\n", s, x );
    
       s = "  -9885 pigs";      /* Test of atoi */
       i = atoi( s );
       printf( "atoi test: \"%s\"; integer: %d\n", s, i );
    
       s = "98854 dollars";     /* Test of atol */
       l = atol( s );
       printf( "atol test: \"%s\"; long: %ld\n", s, l );
    }
    Output
    atof test: "  -2309.12E-15"; float:  -2.309120e-012
    atof test: "7.8912654773d210"; float:  7.891265e+210
    atoi test: "  -9885 pigs"; integer: -9885
    atol test: "98854 dollars"; long: 98854
    

    mit freundlicher genehmigung von ms 😉

    viel spass beim ausprobieren


Anmelden zum Antworten