C++打开文件
示例
对于所有3个文件流(,和)ifstream,打开文件的方式相同。ofstreamfstream
您可以直接在构造函数中打开文件:
std::ifstream ifs("foo.txt"); // ifstream: Opens file "foo.txt" for reading only. std::ofstream ofs("foo.txt"); // ofstream: Opens file "foo.txt" for writing only. std::fstream iofs("foo.txt"); // fstream: Opens file "foo.txt" for reading and writing.
另外,您可以使用文件流的成员函数open():
std::ifstream ifs; ifs.open("bar.txt"); // ifstream: Opens file "bar.txt" for reading only. std::ofstream ofs; ofs.open("bar.txt"); // ofstream: Opens file "bar.txt" for writing only. std::fstream iofs; iofs.open("bar.txt"); // fstream: Opens file "bar.txt" for reading and writing.
您应该始终检查文件是否已成功打开(即使在写入时)。失败可能包括:文件不存在,文件没有正确的访问权限,文件已在使用中,发生磁盘错误,驱动器断开连接...可以按以下方式进行检查:
//尝试读取文件“foo.txt”。 std::ifstream ifs("fooo.txt"); //注意错别字;该文件无法打开。 //检查文件是否已成功打开。 if (!ifs.is_open()) { //该文件尚未打开;在此处采取适当的措施。 throw CustomException(ifs, "File could not be opened"); }
如果文件路径包含反斜杠(例如,在Windows系统上),则应正确转义它们:
//在Windows上打开文件“c:\folder\foo.txt”。 std::ifstream ifs("c:\\folder\\foo.txt"); //使用转义的反斜杠
或使用原始文字:
//在Windows上打开文件“c:\folder\foo.txt”。 std::ifstream ifs(R"(c:\folder\foo.txt)"); //使用原始文字
或改用正斜杠:
//在Windows上打开文件“c:\folder\foo.txt”。 std::ifstream ifs("c:/folder/foo.txt");
如果当前要在Windows上的路径中使用非ASCII字符打开文件,则可以使用非标准的宽字符路径参数:
//在Windows上打开文件'пример\foo.txt'。 std::ifstream ifs(LR"(пример\foo.txt)"); //使用带有原始文字的宽字符