C ++不会创建文本文件

问题描述 投票:0回答:2

我是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)。我真的需要您的帮助。

c++ text-files fstream
2个回答
0
投票

您做得太多。

std::ofstream file ("hello.txt");

此行创建ofstream并将其打开以进行写入。当打开流进行写入时,它在磁盘上的内容将被清空!

file << "Hello There!";

这就像将某些内容打印到ofstream。通常,它存储在尚未保存到磁盘或显示在屏幕上的缓冲区中。 (要实际将某些内容保存到磁盘,您需要endlflush或关闭文件。当打开文件的块结束时或明确关闭文件时,文件将关闭。)

file.open("hello.txt"); //line 6

您再次打开文件进行输出,从而清空磁盘上的内容并清空缓冲区。

}

无论缓冲区中什么,都保存到磁盘。但是缓冲区中什么也没有,因为您再次打开了文件!

您应删除第6行。


0
投票

我在这里看到2个问题:

[首先,您刚刚编译了代码,因此输出是名为“ 026.Writing-to-Files-With-Ofstream.o”的已编译目标文件。您需要运行它。

第二,代码不完全正确。在执行std::ofstream file("hello.txt");时已经打开了文件,因此不需要第6行。需要在写入文件之前先打开文件。另外,完成写入后,您需要关闭文件:file.close();

© www.soinside.com 2019 - 2024. All rights reserved.