【问题标题】:Write a string with binary mode vs text mode [duplicate]用二进制模式与文本模式写一个字符串[重复]
【发布时间】:2019-04-22 02:00:31
【问题描述】:

以下代码有什么区别:

代码 #1:使用二进制模式

int main()
{
    std::fstream w("D:\\file.txt", std::ios::out | std::ios::binary);

    char *p = "Hello World\r\nHi";

    w.write(p, strlen(p));

    // Close the file
    w.close();
}

代码 #2:使用文本模式

int main()
{
    std::fstream w("D:\\file.txt", std::ios::out);

    char *p = "Hello World\r\nHi";

    w.write(p, strlen(p));

    // Close the file
    w.close();
}

这样写字符串时使用二进制模式还是文本模式有关系吗?

【问题讨论】:

  • 由于您使用的是 Windows,因此在文本模式下 '\n' 被写入两个字符 '\r' '\n'
  • 由于\n的处理,windows上的文件会有所不同。在十六进制编辑器中查看。
  • 是的,我使用的是 Windows 8.1。
  • 在我的代码中,我将w.write(.. 用于二进制和文本模式。有关系吗?
  • 重复的问题有 C 代码而不是 C++。

标签: c++ binary fstream


【解决方案1】:

基本上,如果您使用文本,位表示文本数据,但在二进制中,位表示自定义数据(不仅是文本,还有音频、图像等)。如果您打算使用文本,我建议您使用文本模式,因为它不太容易被损坏并且更容易与其他应用程序一起使用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多