1

我是 linux 新手,我想创建一个文件并写入一些内容。

我没有收到任何错误,但代码没有创建任何文件......我错过了什么?

#include <iostream>
#include <fstream>

int main(){
    std::ofstream out("/Home/peter/Dropbox/C++/linux/data.dat", std::ios::out | std::ios::binary);
    if(!out)
        std::cout << " File isn't open\n" << std::endl;
    char s = 'a';

    for(int i = 0; i<100; i++)
        out.put(s);

    return 0;

}
4

3 回答 3

6

您应该添加out.close()到程序的末尾。这将刷新写缓冲区以确保它被正确写入。

此外,请确认您实际上拥有(更确切地说,您的程序拥有)在该目录中创建和写入文件的权限。

最后,确保您写入的路径实际上是正确的。正如@Adam 在评论中指出的那样,您可能打算使用/home/...而不是/Home/...

于 2013-07-25T21:29:50.733 回答
2

我复制并粘贴了脚本,但更改了路径,代码执行成功。我建议out.close()在完成文件后使用来关闭流。

您还可以在文件上使用流运算符来编写它:

for( int i = 0; i < 100; i++ )
  out << s;
于 2013-07-25T21:32:53.997 回答
1

更改out.put(s);out << s;

其次,一旦你处理完文件和流,关闭它们是一个好习惯。它可以防止不必要的内存泄漏。所以out.close()在返回之前或完成文件处理时放置。

于 2013-07-25T21:38:06.350 回答