C++ 不会创建一个文件来输出文本?

C++ will not create a file to output text to?

所以,我这里有一个简单的 C++ 代码片段,它只询问文件路径,检查文件路径是否存在,如果存在,程序将关闭。如果没有,它会创建一个文件并向其中写入文本。我输入的路径是C:\temp.txt,但是不管我用哪个路径结果都是一样的:没有创建文件。我正在使用 Visual Studio 2010.

string outFile = "";
cout << "Enter a file path for an output file that does not exist already: ";
cin >> outFile;
ofstream file_writer;
file_writer.open(outFile, ios::out);
if (file_writer.good()) {
    cout << "This file exists already!" << endl;
    system("PAUSE");
    return 255;
}
else
file_writer << "Hello";
file_writer.close();

不错! ofstream::good() returns 如果没有错误发生则为真。在 if 条件中使用否定。

if (!file_writer.good()) {
...
}

检查您的 fail() 错误消息:

if (outfile.fail())
    cout << strerror(errno) << endl;

您不能写入 "C:"。 尝试不同的路径,它应该可以工作。

你可以试试:

string outFile = "";
cout << "Enter a file path for an output file that does not exist already: ";
cin >> outFile;
ofstream file_writer;
file_writer.open(outFile, ios::in);
if (file_writer.good()) { //This now just checks if the file exists already
    cout << "This file exists already!" << endl;
    system("PAUSE");
    return 255;
}
file_writer.open(outFile, ios::out); //Now since we know the file doesn't exist, we can create it safely
if (!file_writer.good()) {
    cout << "Failed to create file!" << endl;
    return 254;
}
file_writer << "Hello";
file_writer.close();

此回复可能有点晚,但我只花了两天时间弄清楚为什么 Visual Studio C++ 没有创建任何文本文件。

我正在学习 Wrox Professional C++ 第四版。在关于文件流部分的第 13 章中,我无法使用任何示例。我花了很多时间下载了相同结果的示例代码。

然后我查看了我的杀毒软件。那里有两个设置引起了我的注意:文件夹访问和排除。我是 运行 Windows Widows 10 上的安全人员。我更改了排除项以防止安全软件监视我的 vs2019 文件夹和子文件夹。没有改善。

然后我查看了父文件夹 c:\files。这启用了文件夹访问权限。我删除了它,一切正常。我没有将文件夹访问权限放在整个文件夹上,而是在特定的子文件夹上启用了它,而忽略了 vs2019 文件夹。我希望这能为某人节省许多令人沮丧的时间。