我正在为 Windows 开发,我还没有找到关于如何正确声明和稍后设置 unicode 字符串的足够信息。至今,
wchar_t myString[1024] = L"My Test Unicode String!";
我假设上面的内容是 [1024] 是分配的字符串长度,即我需要在该字符串中有多少个字符。L"" 确保引号中的字符串是 unicode(我发现的一个 alt 是 _T())。现在稍后在我的程序中,当我尝试将该字符串设置为另一个值时,
myString = L"Another text";
我得到编译器错误,我做错了什么?
此外,如果有人有一个简单而深入的 unicode 应用程序资源,我想有一些链接,曾经为一个专门用于此的网站添加了书签,但现在似乎已经消失了。
编辑
我提供了整个代码,我打算将其用作 DLL 函数,但到目前为止没有返回任何内容。
#include "dll.h"
#include <windows.h>
#include <string>
#include <cwchar>
export LPCSTR ex_test()
{
wchar_t myUString[1024];
std::wcsncpy(myUString, L"Another text", 1024);
int myUStringLength = lstrlenW(myUString);
MessageBoxW(NULL, (LPCWSTR)myUString, L"Test", MB_OK);
int bufferLength = WideCharToMultiByte(CP_UTF8, 0, myUString, myUStringLength, NULL, 0, NULL, NULL);
if (bufferLength <= 0) { return NULL; } //ERROR in WideCharToMultiByte
return NULL;
char *buffer = new char[bufferLength+1];
bufferLength = WideCharToMultiByte(CP_UTF8, 0, myUString, myUStringLength, buffer, bufferLength, NULL, NULL);
if (bufferLength <= 0) { delete[] buffer; return NULL; } //ERROR in WideCharToMultiByte
buffer[bufferLength] = 0;
return buffer;
}