gpt4 book ai didi

c++ - Codecvt 在 gcc 中不起作用

转载 作者:搜寻专家 更新时间:2023-10-31 01:41:31 32 4
gpt4 key购买 nike

我正在尝试将我自己的 codecvt 与标准 iostream 一起使用。我正在使用这条线:

std::cout.imbue(std::locale(std::locale("C"), new rot13codecvt()));

rot13codecvt 只是一个例子,无耻地从 the 中逐字提取interwebs .一个完整的可运行示例是 here .我真正的 codecvt 做了一些不同的事情。

正如您在链接的实际示例中看到的,这在 g++ 中完全不起作用。输出不是 rot13d。自定义 codecvt 类中的任何函数都不会被调用。但它在 VS2012 中运行良好。

我尝试了“C”以外的其他语言环境,但都没有用。还尝试了一个例子 here ,同样的结果。

我做错了什么?

最佳答案

只需要文件流即可使用 std::codecvt<...>并且不要求任何标准流对象根据文件流来实现。实现者选择这两种选择都有其原因。 Dinkumware 的实现使用 <stdio.h>对于它的大部分操作,在这种情况下,在引擎盖下使用相同的实现是有意义的。 libstdc++ 避免了一些开销并直接访问标准 C 和 C++ 流之间共享的缓冲区,因此使用不同的流实现。

使用文件流时使用 std::codecvt<...>方面应该是一致的。

关于c++ - Codecvt 在 gcc 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28319642/

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