|
Zeilenweises Einlesen Mit Buffer
|
Das Problem ist, dass der Systemcall read() ja nicht weiss, wann ein Zeilentrenner folgt wenn man zeilenweise einlesen möchte.
Um dieses Problem zu lösen, kann man entweder sehr ineffizient Zeichen für Zeichen mit read einlesen und sich die Zeile so selbst zusammensuchen:
std::string readLineFromFiledescriptor(int fd) {
std::string line;
char buf;
while ((read(fd,&buf,sizeof(buf)>0)&& buf != '\n') {
line += buf;
}
return line;
}
Oder man muss einen Buffer verwenden, der das Ergebnis von read sammelt. Beim Verwalten eines solchen Buffers kann man leicht Fehler machen, deshalb ist besondere Vorsicht geboten.
|
Zeilenweises Einlesen Mit Buffer |
|