【问题标题】:File writing, difference in insertion operator and write function?文件写入,插入运算符和写入函数的区别?
【发布时间】:2014-07-02 11:26:11
【问题描述】:

我想知道插入运算符(和函数write()有什么区别,因为下面给出的行代码

outFile << "Hello world";

还有

outFile.write("Hello world");         

当我试图在文本文件中写入字符串“Hello world”时,这两个都达到了我想要的结果。那么这两者有什么区别呢? 以及为什么插入操作符可以写入文件时还需要write()函数?

【问题讨论】:

    标签: c++


    【解决方案1】:

    那么这两者有什么区别呢?

    主要区别在于第二个不会编译。 write 有两个参数,用于写入一个已知大小的字符序列:

    outFile.write("Hello world", 11);
    

    当您已经有一个包含要输出的字符序列的数组时,请使用此无格式输出

    格式化输出的插入运算符用于格式化许多不同的类型(包括以零结尾的字符串,如您的示例所示)。例如:

    outFile << "Hello world";  // outputs the string (no need to specify the size)
    outFile << 42;             // outputs "42", formatting the integer as text
    

    【讨论】:

    • :v 很好,当然它不会编译。但是我仍然无法理解插入运算符?请多解释。
    • @shujat7: &lt;&lt; 将接受任何输入:string、int、char*、whathaveyou,将其转换为字符串然后写入。 (当然,如果类型不能隐式转换,就会失败)。
    • @shujat7:我添加了几个使用&lt;&lt; 的示例。当您希望流弄清楚如何格式化您输出的任何类型时使用它(数字类型、指针、std::string、像您的示例一样的 C 样式字符串,以及任何其他具有适当重载 &lt;&lt; 的类型)。
    【解决方案2】:

    write() 是未格式化的输出,只需要 const char * 和 int。它也不会在失败时设置失败位。如需更多信息,请查看here。运算符&lt;&lt; 具有格式化和未格式化的重载。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-03
      • 1970-01-01
      • 1970-01-01
      • 2011-01-07
      • 1970-01-01
      • 1970-01-01
      • 2016-01-28
      • 2012-06-16
      相关资源
      最近更新 更多