File 如果在Visual Studio之外执行.exe,为什么ofstream不创建文件?

File 如果在Visual Studio之外执行.exe,为什么ofstream不创建文件?,file,visual-studio-2013,ifstream,ofstream,File,Visual Studio 2013,Ifstream,Ofstream,所以,我有一个叫做设置的类: void Settings::load(){ std::ifstream ini_file("settings.ini"); if (ini_file.is_open()){ // TODO: Read this checking correctness std::string buffer; char buffer2; ini_file >> buffer; ini_file >> width;

所以,我有一个叫做设置的类:

void Settings::load(){

std::ifstream ini_file("settings.ini");

if (ini_file.is_open()){
    // TODO: Read this checking correctness
    std::string buffer;
    char buffer2;

    ini_file >> buffer;
    ini_file >> width;
    ini_file >> buffer2;

    ini_file >> buffer;
    ini_file >> height;
    ini_file >> buffer2;

    ini_file >> buffer;
    ini_file >> fullscreen;
    ini_file >> buffer2;

    ini_file.close();
}
else
    save();
}

void Settings::save(){

std::ofstream ini_file("settings.ini");

ini_file << "width= " << width << ";\n"
    << "height= " << height << ";\n"
    << "fullscreen= " << fullscreen << ";\n";

ini_file.close();
}
理论上,这应该检查settings.ini是否存在,如果不存在,则使用默认设置值创建它。现在,如果我在Visual Studio下执行它,它会在项目文件夹中创建settings.ini,但是如果我将可执行文件复制到另一个文件夹并手动双击执行它,它不会创建任何文件

为什么会这样


谢谢大家!

这可能取决于运行可执行文件的位置。您可能没有在那里创建文件的权限,或者这些文件可能被用户重定向到其他位置。您需要提供有关从何处运行它的更多详细信息。我在VS项目中创建了一个文件夹,并在其中复制了exe。该文件夹的完整路径名是什么?你应该编辑你的问题,包括一个简短完整的例子,这样我们就可以看到你在做什么。