c ++:逐行读取文件

tf.*_*.rz -4 c++ file-io filepath

我想知道是否有一种C++方式打开文件并逐行读取输入.

我遇到了以下代码来完成任务:

#include <iostream>
#include <fstream>
using namespace std;

int main () {
  ifstream myfile;
  myfile.open ("example.txt");
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

我鼓励不要使用任何C函数或命令.

问题是,我的"example.txt"是一个字符串的形式,并使用str.c_str()是一个C函数,所以我想我有两种方法来解决这个问题.

有没有其他方法可以逐行读取文件中的输入?也许使用一些接受字符串作为文件路径参数的东西?有没有C++的做事方式?:)

或者,是否有另一种方法将字符串转换为const char*,这是myfile.open()函数需要的?

提前谢谢了!

编辑:我缺乏实​​践和研究使我认为c_str()是一个C函数,而事实并非如此.我很抱歉.既然不是我找到了答案.

Gri*_*wes 5

C++ 11的fstream构造函数接受string.在大多数情况下,您希望使用fstream构造函数,而不是.open()- 您保存一行和一个函数调用.

要逐行读取文件,您应该使用std::getline().

还要注意,string::c_str()仍然是C++函数,而不是C语言,以及fstream构造函数const char *.大多数(如果不是全部,我不是100%肯定)C标准库函数也包含在C++标准中.