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

String-Conversion: MBCS <-> UNICODE with multiple within

本文关键字:gt 转换 MBCS lt 字符串 UNICODE      更新时间:2023-10-16

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

我使用的是MultiByteToWideChar,但这不起作用,因为函数在遇到第一个''-字符后停止。似乎它把它解释为字符串的末尾。

当我不传递-1作为长度参数,而是传递std::string缓冲区中数据的实际长度时,它会将Unicode字符串与原始字符串中未出现在该位置的字符混淆。。。

我必须编写自己的转换函数吗?或者,我应该将数据保留为一个随意的字符数组,因为特殊符号会被错误地转换?

关于

使用这种方法会失败的事情很多。除其他外,额外的字节可能会添加到你的数据中,而你却没有意识到

奇怪的是,你唯一的选择是std::wstring()。如果这是一个自制的库,那么您应该不厌其烦地编写一个新函数。如果不是,在写自己的文章之前,确保没有比这更合适的了。