这个怎么样?
std::string ReadNthLine(const std::string& filename, int N)
{
std::ifstream in(filename.c_str());
std::string s;
//for performance
s.reserve(some_reasonable_max_line_length);
//skip N lines
for(int i = 0; i < N; ++i)
std::getline(in, s);
std::getline(in,s);
return s;
}
Run Code Online (Sandbox Code Playgroud)
如果要读取第 n 行的开头,可以使用 stdin::ignore 跳过前 n-1 行,然后从下一行读取以分配给变量。
template<typename T>
void readNthLine(istream& in, int n, T& value) {
for (int i = 0; i < n-1; ++i) {
in.ignore(numeric_limits<streamsize>::max(), '\n');
}
in >> value;
}
Run Code Online (Sandbox Code Playgroud)