void DoSplitLines( const StringPiece& full, std::vector<StringType>* result, bool keep_line_endling ) { result->clear(); size_t prev_pos = 0; size_t pos; StringType token; while ((pos = full.find('\n', prev_pos)) != std::string::npos) { token.assign(full.data() + prev_pos, pos - prev_pos + 1); if (!keep_line_endling) RemoveLineEnding(&token); result->push_back(token); prev_pos = pos + 1; } if (prev_pos < full.size()) { token.assign(full.data() + prev_pos, full.length() - prev_pos); if (!keep_line_endling) RemoveLineEnding(&token); result->push_back(token); } }
bool LocalFile::ReadLine(std::string* line, size_t max_size) { line->resize(max_size + 1); char* p = fgets(&(*line)[0], max_size, m_fp); if (!p) return false; line->resize(strlen(p)); RemoveLineEnding(line); return true; }