diff options
| author | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2012-02-29 02:50:12 +0900 |
|---|---|---|
| committer | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2012-02-29 02:50:12 +0900 |
| commit | 037f1512dbcdf19237d6064660d5c75b4121f0bf (patch) | |
| tree | ec092c918a1396e382d776932d2265b019888b9e /src/BufferedFile.cc | |
| parent | c63a524a889415bb321231ac723de8547318900d (diff) | |
Added BufferedFile::getLine() to make reading one line more flexible.
Fixes bug#3495336
Diffstat (limited to 'src/BufferedFile.cc')
| -rw-r--r-- | src/BufferedFile.cc | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/src/BufferedFile.cc b/src/BufferedFile.cc index 1bca85f4..fe763501 100644 --- a/src/BufferedFile.cc +++ b/src/BufferedFile.cc @@ -99,6 +99,28 @@ char* BufferedFile::getsn(char* s, int size) return ptr; } +std::string BufferedFile::getLine() +{ + std::string res; + if(eof()) { + return res; + } + char buf[4096]; + while(gets(buf, sizeof(buf))) { + size_t len = strlen(buf); + bool lineBreak = false; + if(buf[len-1] == '\n') { + --len; + lineBreak = true; + } + res.append(buf, len); + if(lineBreak) { + break; + } + } + return res; +} + int BufferedFile::close() { if(open_) { |
