gpt4 book ai didi

c++ - 流、stream_bufs、codecvt 方面和\n 到\r\n 翻译

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:36:05 26 4
gpt4 key购买 nike

\r\r\n 转换的 C++ IO 流的哪一部分?它是 stream_buf 本身,还是 codecvt 方面的内部到外部编码转换的一部分?

更新 1

你们都说在streambuf/filebuf中完成。行。但是这种安排如何处理诸如 UTF-16 之类的外部编码?然后似乎必须使用禁用翻译的 ios::binary 标志打开文件。

最佳答案

这种转换(通常)不是由流、streambuf 或 facet 执行的。由 streambuf 的 fputc() 调用的 C 库代码(例如 overflow())负责和 underflow() .

如果您出于某种原因需要它(例如,在实现 dos2unix 例程时),boost.iostreams. 中有一个方便的示例

编辑:std::filebuf仅支持文本文件的多字节编码,例如 UTF-8 或 GB18030 或任何语言环境使用的编码。 UTF-16 文件必须以二进制模式打开,作为纯字节流(可以用 C++11 的 codecvt 工具解释为 UTF-16),是的,行尾不会被转换。

关于c++ - 流、stream_bufs、codecvt 方面和\n 到\r\n 翻译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10922818/

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