gpt4 book ai didi

c++ - 以二进制模式打开输入文件流时设置 skipws 标志

转载 作者:太空狗 更新时间:2023-10-29 20:46:46 27 4
gpt4 key购买 nike

我知道不应该在以二进制模式打开的输入流上使用提取运算符,但应该使用成员函数read

std::ifstream ifs("file.bin", std::ios::in | std::ios::binary);
char c;
ifs >> c; // Should not be used
ifs.read(&c, 1); // OK

但无论如何都可以做到。所以我的问题是,以二进制模式打开时不取消设置输入文件流上的 skipws 标志的理由是什么?

最佳答案

“二进制”模式,由 std::ios_base::binary 控制,仅用于关闭标准 C++ \n 字符和存储在文件中的系统特定换行符序列。

它完全独立于您正在解析的文件是否包含有意义的分隔空格或一些完全不同的字节格式,因此没有理由将两个正交的功能部分联系在一起。

(C++ 标准并没有详细说明二进制模式的含义,C 标准中有更多细节讨论了文本流和二进制流之间的潜在差异。二进制流必须按原样逐字节读回写在任何给定的系统上,而文本流只需要这样做,因为有一些限制围绕着在换行符之前没有额外的空格并且除了换行符和制表符之外没有任何控制字符。系统不需要在二进制和文本流。)

关于c++ - 以二进制模式打开输入文件流时设置 skipws 标志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7253864/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com