无法打开 fstream C++ 文件,即使它与 .cpp 位于同一位置

Failure to open fstream C++ file even though it's in same location as .cpp

我目前正在做一些功课,我无法让这段简单的代码(我已经提取了它)工作。我只需要它来打开文件,这样我就可以读写它。 该文件 (Sedes.txt) 与 .cpp 和 .exe 位于当前工作目录中的相同位置。即使添加带有 C:\ 或 C:\ 或 C:// 或 C:/ 的路径也不起作用。 我正在使用带有编译器代码生成选项的 DEV C++ -std ISO C++11

我还确认使用 this link 和解决方案代码来证实目录。它在同一个文件夹中输出。

#include <iostream>
#include <fstream>
#include <string>

using namespace std;

fstream aSedes("Sedes.txt");

int main(){
   string txtWrite = "";
   string txtRead = "";

   aSedes.open("Sedes.txt", ios_base::in | ios_base::out);
   if(aSedes.fail()){
       cout << "!---ERROR: Opening file ln 446---!";
   } else {
       cout << "Sedes.txt opened successfully." << endl;
       cout << "Text in file: " << endl;
       while(aSedes.good()){
           getline(aSedes, txtRead);
           cout << txtRead << "\n";
       }
   }
   aSedes.close();

   return 0;
}

老实说,我完全迷路了。我试过到处切换它都无济于事。

您打开文件两次,一次使用构造函数,一次使用 open

fstream aSedes("Sedes.txt"); // opened here

int main(){
   string txtWrite = "";
   string txtRead = "";

   aSedes.open("Sedes.txt", ios_base::in | ios_base::out); // and here again
   if(aSedes.fail()){

试试这个

int main(){
   string txtWrite = "";
   string txtRead = "";

   fstream aSedes("Sedes.txt", ios_base::in | ios_base::out);
   if(!aSedes.is_open()){

您可能更喜欢 is_open 检查文件是否打开。您可能应该为流使用局部变量。但是如果你想要一个全局变量那么这也应该有效

fstream aSedes;

int main(){
   string txtWrite = "";
   string txtRead = "";

   aSedes.open("Sedes.txt", ios_base::in | ios_base::out);
   if(!aSedes.is_open()){