gpt4 book ai didi

c++ - C++ 中的字符串类型 : how to convert from LPWSTR to LPSTR?

转载 作者:行者123 更新时间:2023-11-28 06:43:08 25 4
gpt4 key购买 nike

我正在调用返回 LPWSTR(字符串包含文件路径)的 C++ 方法,但我需要将其转换为 LPSTR 才能继续。

我以前从未使用过 C++,尽管这里详细解释了不同的字符串类型:http://www.codeproject.com/Articles/76252/What-are-TCHAR-WCHAR-LPSTR-LPWSTR-LPCTSTR-etc ,我很困惑。

当我将 LPWSTR 转换为 LPTSTR(在我的应用程序中应该等于 LPSTR)时,我得到了一个 Unicode 符号。虽然我猜想在这种情况下转换不合适,但我不明白为什么它只返回一个字符而不是将 LPWSTR 的所有 2 字节字符以某种方式解释为 1 字节-人物。我找到了对 WideCharToMultiByte 函数的引用,它显然可以将 LPWSTR 转换为 std::string,而我又不能将其转换为 LPSTR 要么。

那么有没有一种从 LPWSTR 获取 LPSTR 的简单方法?

最佳答案

将指针转换为另一种类型的指针不会改变或转换原始指针指向的内容。

我认为,您应该能够在 std::string 上调用 c_str(),并将其转换为 LPSTR。因此,使用 WideCharToMultiByte(如果确实如您所说,转换为 std::string)并对结果调用 c_str。这将为您提供一个常量字符串指针 (LPCSTR)。您可以复制它(例如通过 strdup)并将结果转换为 LPSTR

返回的指针将指向使用 strdup 分配的字符串,因此在不再需要该字符串时应将其传递给 free

我从 Windows API 中熟悉的 WideCharToMultiByte 函数(参见 documentation )直接将宽字符字符串转换为多字节编码字符串,而无需通过 std::string,尽管它仍然需要分配一个缓冲区来保存输出字符串。您也许可以改用它。

关于c++ - C++ 中的字符串类型 : how to convert from LPWSTR to LPSTR?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25550013/

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