字符串转换:MBCS< - > UNICODE内有多个\ 0

时间:2012-08-23 21:32:01

标签: c++ windows unicode msdn multibyte-functions

我正在尝试将std :: string Buffer(包含位图文件中的数据)转换为std :: wstring。

我正在使用MultiByteToWideChar,但这不起作用,因为该函数在遇到第一个'\0'字符后停止。好像它把它解释为字符串的结尾。

当我没有传递-1作为长度参数,但是std :: string-Buffer中数据的实际长度时,它会使Unicode-String混乱,其中的字符绝对不会出现在原始位置串...

我是否必须编写自己的转换功能? 或者我可能会将数据保存为临时字符数组,因为特殊符号将被错误地转换?

关于

1 个答案:

答案 0 :(得分:1)

有许多很多的东西会因这种方法而失败。除此之外,额外的字节可能会在您没有意识到的情况下添加到您的数据中。

奇怪的是,你唯一的选择需要std::wstring()。如果这是一个本土的库,你应该不厌其烦地写一个新函数。如果不是,请确保在编写自己的内容之前没有更合适的内容。