【问题标题】:ofstream does not create file when running with CLion using CMake使用 CMake 与 CLion 一起运行时,ofstream 不会创建文件
【发布时间】:2015-11-22 00:18:35
【问题描述】:

我有这个代码来创建一个文件,当我用 CLion 运行它时,它会打印到控制台但不创建文件,我该如何解决这个问题?谢谢

#include <iostream>
#include <fstream>

using namespace std;

int main() {

    ofstream log_file;
    log_file.open("sample23.txt");

    if (log_file.is_open())
        std::cout << "Open";

    log_file << "stuff" << endl;

    log_file.close();

    return 0;
}

【问题讨论】:

  • 也许它会将文件创建到另一个目录中? stackoverflow.com/questions/25834878/…
  • 您没有提供必要的信息。您如何测试文件是否已创建?你在寻找正确的目录吗?您的程序试图在(当前工作目录)中创建文件的目录是否存在?如果确实存在,您的程序 [或执行它的进程] 是否有权创建文件?
  • @nnn 是的,就是这样,写下来回答,我会接受你的回答

标签: c++


【解决方案1】:

文件可能会被创建到另一个目录(工作目录)中。

您可以找到该位置(并在需要时更改),如下所示: How do I change the working directory for my program

【讨论】:

    【解决方案2】:

    由于文件为空,请确保在关闭前刷新

    试试这个

    ofstream f;
    f.open( "sample.txt", ios::out );
    f << flush;
    f.close();
    

    【讨论】:

      【解决方案3】:

      这里有 3 件事: 1.) 为了输出到另一个文件,你必须像这样创建另一个变量:

      ifstream someoutputfile;
      someoutputfile.open("filename");
      

      2.)您实际上必须将另一个变量设置为“占位符”,以自动分配文件找到的第一件事并将其分配给。这可能取决于您的输入文件包含什么数据类型(int、double、string 等)。而不是:

      log_file << "stuff" << endl;
      

      你可以做这样的事情......

      // if my input file is integers for instance..
      int data = 0;
      log_file >> data; 
      

      这也适用于您的文件包含多种数据类型的情况。 例如:

      // if I have two different data types...
      string somebody;
      int data = 0;
      log_file >> data >> somebody;
      

      3.) 将您的文件数据输出到屏幕,只需按照与#1 中的示例类似的方式即可。

      someoutputfile << data << somebody << endl;
      

      此外,不要忘记关闭输入和输出文件的数据: 一些输出文件.close() 希望在某种程度上有所帮助:)

      【讨论】:

      • 感谢您的回答,我意识到问题出在工作目录上
      • 您是否使用 Visual Studio 来编写程序?我问是因为上面的输入/输出文件目录可能是一个需要修复的常见问题。
      猜你喜欢
      • 2012-09-25
      • 1970-01-01
      • 2016-09-25
      • 1970-01-01
      • 2011-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-03
      相关资源
      最近更新 更多