.read()/.readsome()
-
Guten Tag,
Mein Code sieht grob ungefähr so aus:
char c[2048]; ifstream source("source.txt"); while(...) { source.read(c, 2048); cout << "c length: " << strlen(c) << '\n'; }Das eigenartige nur... man erwartet doch, dass hier immer 2048 steht, bis auf das letzte mal, sofern source.txt > 2048 ... oder habe ich da die funktion .read noch nicht ganz verstanden?
-
Eigentlich kann da maximal 2047 stehen, falls du dafür sorgst, dass c[2047] == 0 ist (und das musst du, damit strlen funktioniert). So wie du es jetzt hast, wird das letzte Byte auch immer von dem fstream überschrieben, also liest strlen halt weiter bis es ein Nullbyte findet.
char c[2048]; c[2047] = 0; ifstream source("source.txt"); while(...) { source.read(c, 2047); cout << "c length: " << strlen(c) << '\n'; }
-
bitte nicht strlen benutzen. gcount() benutzt man dafür.
-
genauer source.gcount()
-
Vielen dank

-
Gibt es auch eine Möglichkeit direkt eine bestimmte Anzahl an Bytes aus einem std::ifstream in einen std::string zu kopieren...?
-
Es gibt std::getline um zeilenweise in einen std::string einzulesen.