gpt4 book ai didi

c++ - 如何连接 LPCWSTR?

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

我会怎样...

string modelPath = "blah/blah.obj"

并将它与...连接起来

L" not found." 

同时将其作为 LPCWSTR 传递。我试着做

(LPCWSTR)(modelPath + " was not found.").c_str()

然而,这并没有奏效。这是它现在的样子的一个更大的例子。

if(!fin)
{
MessageBox(0, L"Models/WheelFinal.txt not found.", 0, 0); //
return;
}

最佳答案

LPCWSTR 是一个L ong P ointer to a C onstant W ide STR ing。 Wide strings ,至少在 Win32 中,是 16 位,而 (const) char 字符串(即 (C)STR 或它们的指针对应部分 LP(C)STR) 是 8 位。

在 Win32 上将它们视为 typedef const char* LPCSTRtypedef const wchar_t* LPCWSTR

std::string 是一个 8 位字符串(默认使用底层类型 char),而 std::wstring 是一个更宽的字符串(即 win32 上的 16 位,默认使用 wchar_t)。

如果可以,使用 std::wstring 连接一个 L"string" 作为直接替换。


关于MessageBox()的注释

Windows 有一个有趣的习惯,即为 API 调用定义宏,根据程序的多字节配置切换底层调用。对于几乎每个使用字符串的 API 调用,都有一个采用 LPCSTRLPWCSTRFunctionAFunctionW 调用分别。

MessageBox 就是其中之一。在 Visual Studio 中,您可以进入项目设置并更改您的多字节(宽/窄)设置,或者您可以直接调用 MessageBoxA/W 以传入字符串的不同编码。

例如:

LPWCSTR wideString = L"Hello, ";
MessageBoxW(NULL, (std::wstring(wideString) + L"world!").c_str(), L"Hello!", MB_OK);

LPCSTR narrowString = "Hello, ";
MessageBoxA(NULL, (std::string(narrowString) + "world!").c_str(), "Hello!", MB_OK);

关于c++ - 如何连接 LPCWSTR?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22999996/

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