【发布时间】:2014-04-10 13:52:03
【问题描述】:
我有以下 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);
}
由于某些奇怪的原因,我的申请以日文或中文出现。所以迷失了这个。
【问题讨论】:
-
MessageBox(0, L"First Win32 Program.", L"My App", MB_OK); -
@DieterLücking 好的,这行得通,您有什么可能的解释可以帮助我吗?我更多的是寻找原因而不是解决方案......如果这是有道理的。我只是想了解发生了什么。
-
@DieterLücking 为什么
L(string)给我英语而LPCWSTR给我日语/中文? -
因为演员表告诉编译器“我有一些类型错误的数据,但我必须撒谎以抑制你的警告。”
-
@Volearix,
L""用给定的数据形成一个适当的宽字符串文字。强制转换获取窄字符串文字的数据并假装它是宽字符串文字。两者有不同的表示。假装一个是另一个会产生不正确的结果。
标签: c++ visual-c++ visual-studio-2012 lpcwstr