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,6Diese 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 intdann 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: 98854mit freundlicher genehmigung von ms

viel spass beim ausprobieren