首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Codecvt不适用于gcc

Codecvt不适用于gcc
EN

Stack Overflow用户
提问于 2015-02-04 10:59:24
回答 3查看 4.2K关注 0票数 2

我正在尝试使用我自己的codecvt和标准的iostreams。我用这句话:

代码语言:javascript
复制
std::cout.imbue(std::locale(std::locale("C"), new rot13codecvt()));

rot13codecvt只是一个例子,无耻地从这个 网际网中删除了它。一个完整的可运行示例是这里。我真正的编解码器做了一些不同的事情。

正如您在链接的活示例中所看到的,这在g++中并不完全有效。输出不是rot13d。从未调用自定义codecvt类中的任何函数。但它在VS2012中运行得很好。

我试过"C“以外的其他地方,但没有一个地方工作。也尝试了一个例子这里,同样的结果。

我做错了什么?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-02-04 13:51:27

只有文件流才需要使用std::codecvt<...>,并且不要求任何标准流对象都是按文件流实现的。这两种选择的实施者都有理由。Dinkumware的实现在其大多数操作中都使用<stdio.h>,在这种情况下使用相同的实现是有意义的。libstdc++避免了一些开销,直接访问标准C流和C++流之间共享的缓冲区,从而使用不同的流实现。

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

票数 2
EN

Stack Overflow用户

发布于 2017-10-18 20:07:21

编解码标题存在于gcc 5.1。

票数 2
EN

Stack Overflow用户

发布于 2015-02-04 13:43:11

与g++一起提供的g++尚未实现c++11标准。在我的版本中,<codecvt>头完全丢失了。

代码语言:javascript
复制
f.jardon@xxxx 14:40:40 ~
$ find /usr/lib/gcc/x86_64-pc-cygwin/4.9.2/ -name codecvt

f.jardon@xxxx 14:41:17 ~

这并不是唯一遗漏的东西:

代码语言:javascript
复制
f.jardon@xxxx 14:46:22 ~
$ grep -rl wbuffer_convert 'c:/Program Files (x86)/Microsoft Visual Studio 12.0/VC/include/'
c:/Program Files (x86)/Microsoft Visual Studio 12.0/VC/include/cvt/wbuffer
c:/Program Files (x86)/Microsoft Visual Studio 12.0/VC/include/cvt/xtest
c:/Program Files (x86)/Microsoft Visual Studio 12.0/VC/include/xlocbuf

f.jardon@xxxx 14:46:25 ~
$ grep -rl wbuffer_convert /usr/lib/gcc/x86_64-pc-cygwin/4.9.2/include/c++/
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28319642

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档