在C++中获取文本文件的第n行

MrJ*_*ckV 7 c++ algorithm text file ifstream

我需要读取文本文件的第n行(例如,textfile.findline(0)会找到加载的文本文件的第一行ifstream textfile).这可能吗?我并不需要把文件的内容在一个阵列/矢量,我需要只是文本文件的特定行分配给varible(具体为INT).

PS我正在寻找最简单的解决方案,不需要我使用任何大型外部库(例如Boost)在此先感谢.

Arm*_*yan 7

这个怎么样?

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)


Dav*_*hme 5

如果要读取第 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)