【发布时间】:2013-02-05 17:03:22
【问题描述】:
我有一个vector<BYTE>,它代表字符串中的字符。我想将这些字符解释为 ASCII 字符并将它们存储在 Unicode (UTF-16) 字符串中。当前代码假定vector<BYTE> 中的字符是Unicode 而不是ASCII。这适用于标准 ASCII,但不适用于扩展 ASCII 字符。需要使用通过GetACP() 检索到的当前代码页来解释这些字符。我将如何使用这些 ASCII 字符创建 Unicode (UTF-16) 字符串?
编辑:我认为解决方案应该与此处讨论的宏有关:http://msdn.microsoft.com/en-us/library/87zae4a3(v=vs.80).aspx 我只是不确定实际的实现会如何。
int ExtractByteArray(CATLString* pszResult, const CByteVector* pabData)
{
// place the data into the output cstring
pszResult->Empty();
for(int iIndex = 0; iIndex < pabData->GetSize(); iIndex++)
*pszResult += (TCHAR)pabData->GetAt(iIndex);
return RC_SUCCESS;
}
【问题讨论】:
-
如果你用的是MFC,难道不能让
CString自动做吗? -
“我有一个
vector<BYTE>,它代表字符串中的字符。” - 为什么不是std::string? -
没有“扩展ASCII”之类的东西。 有很多不同的 8 位单字节编码,它们的前 128 个代码点与 ASCII 相同,但它们不是 ASCII(其中有很多)。
-
这里是
CString构造函数:msdn.microsoft.com/en-US/library/cws1zdt8(v=vs.110).aspx 只需使用接收指向char的指针和长度的构造函数,您的工作就完成了。 -
@LihO 数据以这种通用方式从设备返回。然后根据一组给定的标准对其进行解释。数据可以是整数、位图、字符串等。
标签: c++ visual-c++ mfc atl