gpt4 book ai didi

c++ - LPCWSTR 错误;有更好的解决方案吗?

转载 作者:行者123 更新时间:2023-11-28 00:30:53 28 4
gpt4 key购买 nike

我有以下 C++ 代码,似乎在我尝试放置字符串的任何地方,我都必须对其进行转换以避免“无法将参数 2 从 const char[x] 转换为 LPCWSTR。我知道我可以通过简单的转换来解决这个问题,但是有什么办法可以让我几乎必须转换我提供的每个字符串吗?我是一名学习 C++ 的 C# 开发人员,所以我猜我缺少该语言的一些基本概念,如果有人能对此有所了解,我将不胜感激!

#include <Windows.h>
#include <string>
using namespace std;

int WINAPI WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
PSTR cmdLine,
int showCmd)
{
MessageBox(0, "First Win32 Program.", "My App", MB_OK);
}

有没有比这更好的解决方案:

{
MessageBox(0, (LPCWSTR)"First Win32 Program.", (LPCWSTR)"My App", MB_OK);
}

出于某种奇怪的原因,我的应用程序出现了日语或中文版本。所以迷失在这个上。

enter image description here

最佳答案

使用 L"text" 创建您的字符串。通过这种方式,您将创建一个很可能来自 WinAPI 的宽字符串。

#include <Windows.h>
#include <string>
using namespace std;

int WINAPI WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
PSTR cmdLine,
int showCmd)
{
MessageBox(0, L"First Win32 Program.", L"My App", MB_OK);
}

问题是您通过使用 C 风格转换为 LPCWSTR 来注入(inject)一个窄字符串。因此,您的两个窄字符(每个 8 位)将以一个 UNICODE 字符(每个 16 位)结束。

关于c++ - LPCWSTR 错误;有更好的解决方案吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22990044/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com