C++ C++;Unicode问题

C++ C++;Unicode问题,c++,unicode,stdstring,widechar,wofstream,C++,Unicode,Stdstring,Widechar,Wofstream,我在处理unicode转换时遇到了一些麻烦 下面的代码将其输出到我的文本文件中。 你好,好吗 std::string test=“HELLO”; std::字符串输出; int len=WideCharToMultiByte(CP_OEMCP,0,(LPCWSTR)test.c_str(),-1,NULL,0,NULL,NULL); char*buf=新字符[len]; int len2=WideCharToMultiByte(CP_OEMCP,0,(LPCWSTR)test.c_str(),-

我在处理unicode转换时遇到了一些麻烦

下面的代码将其输出到我的文本文件中。 你好,好吗

std::string test=“HELLO”;
std::字符串输出;
int len=WideCharToMultiByte(CP_OEMCP,0,(LPCWSTR)test.c_str(),-1,NULL,0,NULL,NULL);
char*buf=新字符[len];
int len2=WideCharToMultiByte(CP_OEMCP,0,(LPCWSTR)test.c_str(),-1,buf,len,NULL,NULL);
输出=buf;
std::wofstream出料口5(“C:\\temp\\log11.txt”);
读了这篇文章后,排出口5

我变了

std::string test = "HELLO";

字符串输出正确,我得到了


HELLOHELLO

在第一次测量呼叫后检查透镜是否正确。通常,不应将test.c_str()强制转换为LPCWSTR。“test”作为“char”-字符串而不是“wchar\u t”-wstring。您可以将其转换为LPCSTR-注意缺少“W”。WinAPI对此有区别。如果您想在其中保留widechars,您确实应该使用
wstring
。。是的,在重新阅读您的代码后,
测试应该是一个wstring,然后您可以安全地将它转换为LPCWSTR。

当您告诉编译器“相信我,我知道它是LPCWSTR。”时,您是否试图理解为什么它不起作用。当它不起作用时?您的注释和链接帮助我理解了它。。你觉得你能帮我解决一个相关的问题吗?请阅读中的Windows Unicode部分。
std::string test = "HELLO";
std::wstring test = L"HELLO";