我是StackOverFlow的新手。
我正在使用Dev-C ++,我想用我的C ++程序编写一个文本文件。但是问题是我的程序没有创建文本文件。
相反,它将创建一个名为“ 026.Writing-to-Files-With-Ofstream.o”的文件。 (我的cpp文件的名称是:026.Writing-to-Files-With-Ofstream.cpp)
这不是我想要的。
而且Dev-C ++也没有给我任何错误或警告。
我尝试使用CodeBlocks,结果仍然相同。它创建一个“ .o”文件,而不是一个文本文件。这是我的代码:
#include <iostream>
#include <fstream>
int main(){
std::ofstream file ("hello.txt");
file << "Hello There!"; //line 5
file.open("hello.txt"); //line 6
return 0;
}
我尽力了。桌面或工作目录中都没有。我切换了线路(5和6)。我真的需要您的帮助。
您做得太多。
std::ofstream file ("hello.txt");
此行创建ofstream并将其打开以进行写入。当打开流进行写入时,它在磁盘上的内容将被清空!
file << "Hello There!";
这就像将某些内容打印到ofstream。通常,它存储在尚未保存到磁盘或显示在屏幕上的缓冲区中。 (要实际将某些内容保存到磁盘,您需要endl
,flush
或关闭文件。当打开文件的块结束时或明确关闭文件时,文件将关闭。)
file.open("hello.txt"); //line 6
您再次打开文件进行输出,从而清空磁盘上的内容并清空缓冲区。
}
无论缓冲区中什么,都保存到磁盘。但是缓冲区中什么也没有,因为您再次打开了文件!
您应删除第6行。
我在这里看到2个问题:
[首先,您刚刚编译了代码,因此输出是名为“ 026.Writing-to-Files-With-Ofstream.o”的已编译目标文件。您需要运行它。
第二,代码不完全正确。在执行std::ofstream file("hello.txt");
时已经打开了文件,因此不需要第6行。需要在写入文件之前先打开文件。另外,完成写入后,您需要关闭文件:file.close();