【问题标题】:C++ ofstream won't print to a file when in a for loop在 for 循环中时,C++ ofstream 不会打印到文件
【发布时间】:2022-12-29 07:38:20
【问题描述】:

我只是将要打印的行放在 for 循环内的文件中,以便将其打印五次,但没有打印任何内容。我的代码如下:

int main() {  
    ofstream (fileAccess);  
    fileAccess.open ("fileName.txt", ofstream::app);  
    for (int i; i < 5; i++) {  
        fileAccess << "Hello World!";  
    }  
    fileAccess.close();  
}

请帮忙

【问题讨论】:

  • 打字错误? for (int i; ...i未初始化。
  • fileName.txt 存在吗?
  • 旁注:fileAccess.close(); 行是不必要的,因为调用析构函数时文件将自动关闭。
  • 你决定不run this code in your debugger了吗?我想你会在几秒钟内解决这个问题。
  • 您是否尝试过在调试器中逐行运行您的代码,同时监视所有变量的值,以确定您的程序在哪一行停止按预期运行?如果你没有尝试过这个,那么你可能想读这个:What is a debugger and how can it help me diagnose problems?你可能还想读这个:How to debug small programs?

标签: c++ ofstream


【解决方案1】:

感谢 Richard Critten,我只需要将 int i 初始化为 0。 我以前从来没有遇到过这个问题,因为它通常默认将其设置为 0,但我更改了它并且第一次尝试就成功了。

【讨论】:

  • “它通常默认设置为 0”这是不正确的。默认情况下不设置为 0,它是未初始化并且读取未初始化的 int 的值始终是未定义的行为。您在读取未初始化的 int 时观察到的始终是未定义的行为,即使您目前喜欢这种行为。
  • 为了将来参考,使用警告编译(gcc 中的-Wall)将警告您此类事情。
猜你喜欢
  • 2020-07-28
  • 1970-01-01
  • 2014-01-10
  • 2020-05-01
  • 2011-08-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多