示例#1
0
std::string GetLineWithSize(std::size_t const size, std::ifstream& stream) {
  std::unique_ptr<char[]> buffer(new char[size]);
  if (!stream.getline(&buffer[0], size).eof() && stream.fail()) {
    stream.clear();
    std::string string_buffer(buffer.get());
    string_buffer += GetLineWithSize(2 * size, stream);
    return std::move(string_buffer);
  } else {
    std::string string_buffer(buffer.get());
    return std::move(string_buffer);
  }
}
示例#2
0
std::string GetLine(std::ifstream& stream) {
  return GetLineWithSize(buffer_size, stream);
}
示例#3
0
std::string GetLine(not_null<std::ifstream*> const stream) {
  return GetLineWithSize(kBufferSize, stream);
}