我正在通过从std::codecvt
. 我应该实现的大多数方法都非常简单,除了 this std::mbstate_t
。在我的编译器 vs2010 上,它被声明为int
. 但是,谷歌告诉我它是一种 POD 类型,它有时是一个联合(我不知道的)或一个结构(我再次找不到它)。
据我了解,std::mbstate_t
是部分转换的占位符。而且,我认为,当需要更多空间来编写输出时,它就会发挥作用,std::codecvt::on_out()
而输出又会调用std::codecvt::do_unshift()
. 如果我的假设是错误的,请纠正我。
我读过另一篇关于存储指针的文章,尽管这篇文章没有足够的答案。我也读过这个例子,它假定它是 32 位类型,尽管标准规定int
不小于 16 位。
我的问题。我可以在 std::mbstate_t 中安全地存储什么?我可以安全地用另一种类型替换它吗?上述帖子的答案建议替换它,但以下评论另有说明。