【问题标题】:What happens inside when we write to a file without opening it?当我们在不打开文件的情况下写入文件时,内部会发生什么?
【发布时间】:2021-05-02 02:25:25
【问题描述】:

例如,如果我写入的文件不在我的

int main(int argc, char** argv) {
    fstream my_file;

    if (argc>1)
    {
            my_file.open("my_file.txt", ios::out);
            cout << "File1 created successfully!"<<endl;
    }


    my_file << "Guru99";
    my_file.close();
    cout<<"Done"<<endl;

    return 0; }

它会把它放在内存中还是放在 dev/null 类型的区域中?

【问题讨论】:

  • 如果文件未打开,则流将处于错误状态,您尝试写入的任何内容都会失败。
  • 如果我运行代码它不会给出任何错误,我不想写任何东西(这很好)。只是好奇如果没有打开和使用
  • 回复。 "it does not give any error":你需要check for errors
  • 不,就像我说的那样,流将处于错误状态,任何地方都不会存储任何内容。换句话说,my_file.fail() 将返回 true。此外,my_file.is_open() 将返回 false。您的程序不需要自动显示任何类型的实际错误或以任何其他方式握住您的手。这种行为有据可查,程序员可以根据自己的选择来处理错误。特别是在这些情况下,不会引发异常。
  • 好的,知道了。但是有什么办法记忆被这种方式堵塞吗?任何缓冲区,它连续存储给定数据以在内存中打印?或者它只是忽略要打印的给定字符串并将错误标志设置为 true?

标签: c++ file file-handling iostream


【解决方案1】:

如果您尝试写入与文件无关(未打开)的fstream 对象,您的输出将被丢弃,failbit 将被设置:

如果无法生成输出,则设置失败位,如果在此流的异常掩码中启用了失败位上的异常,则抛出 ios_base::failure。

https://en.cppreference.com/w/cpp/named_req/FormattedOutputFunction 中所述。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-31
    • 2020-11-09
    相关资源
    最近更新 更多