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

时间:2016-02-08 07:51:50

标签: c++ visual-studio io output

所以,我在这里有一个简单的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();

5 个答案:

答案 0 :(得分:0)

尼斯!如果没有错误发生,ofstream::good()将返回true。在if条件中使用否定。

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

答案 1 :(得分:0)

检查你的fail()错误信息:

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

答案 2 :(得分:0)

你不能写信给&#34; C:&#34;。 尝试使用不同的路径,它应该可以工作。

答案 3 :(得分:0)

你可以尝试:

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();

答案 4 :(得分:0)

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

我正在阅读Wrox Professional C ++第四版。在文件流部分的第13章中,我没有任何可用的示例。我花了很多时间下载具有相同结果的示例代码。

然后,我查看了我的防病毒软件。其中有两个设置引起了我的注意:“文件夹访问”和“排除”。我在Windows 10上运行Windows安全性。我更改了排除项以防止安全软件监视我的vs2019文件夹和子文件夹。没有改善。

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