- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在调用返回 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/
我正在尝试阅读这一行,它位于旧版 dll Visual Studio 项目的 C 代码中,但我无法理解它 _fmemcpy((LPSTR FAR *)Defdat,(LPSTR FAR *)&DLLd
我在这个网站上搜索了一个答案,但最重要的答案对我不起作用,我一直收到这个错误。我最近(不确定我是否成功)将我的项目从我的台式机导入到我的新笔记本电脑,没有任何错误。每当我尝试运行时,我都会在多个文件中
此代码不可编译: LPSTR a1 = "a1"; LPSTR lpResult = a1 + "a2"; 如何获得指向“a1a2”字符串的长指针lpResult? 最佳答案 一种选择是使用 std:
让我们暂时假设我有这个变量 LPTSTR cmdArgs = "D:\\path\my.exe -user blah PLATFORM=0 DEVICE=0 -k poclbm VECTORS BFI
我正在开发一个小型 GUI 计算器项目,当我执行以下代码时遇到了问题: HWND edit = GetDlgItem(hWnd, BUTTON_ZERO); LPSTR currText = "";
我想使用以下方法从注册表中读取一个值: char* cDriveStatus=ReadFromRegistry(HKEY_CURRENT_USER,_T(NDSPATH),m_szDriveName)
我正在尝试向 WIN32 API 发送消息以打开 WAV 文件。我可以通过将 LPARAM 参数设置为 L"C:/path/file.wav"来完成此操作,效果非常好!但是,我一直在尝试使用对话框生成
我想在将整个文件转为 char* 后查找一些单词。我知道如何使用字符串类函数来完成它,但我不想再次将数据复制到字符串变量。是否有任何类似的函数可用于 char* 字符串,或者我是否仍应使用字符串类?
我有一个连接到 TimerHandler 函数的 QTimer。 TimerHandler 应该执行我在 header 的公共(public)部分中声明的 SendKeys 函数。如果我手动输入 Se
尽可能使用基本的 C 来构建一个随机顺序从 1 到 52 的数字列表(一副纸牌)。一切正常,但我所有连接字符串并获得结果的尝试都以失败告终。有什么建议么?注意:这不是家庭作业,而是我用来创建游戏的东西
我正在修改一个程序,以将命令行参数作为 LPSTR 类型的变量。目前,该值在程序中被硬编码,并以 _T("program.exe") 的形式传递到所需的函数。该函数需要 LPCTSTR 类型。我尝试将
我正在尝试采用 C++ 中的 LPSTR,例如“12,30,57”并将其拆分,然后将从拆分操作返回的所有数字(它们都是非十进制的)相加到结果中长值。 我可以向你保证,这不是家庭作业。这是我正在编写的一
我有以下代码行: LPSTR address = T2A((LPTSTR)hostAddress); 我可以将 LPCTSTR hostAddress 转换为 LPSTR 而不使用“afxpriv.h
我正在尝试在 MFC 对话框上设置工具提示。我有从字符串资源中读取工具提示的代码,我正在尝试将其修改为不从资源中读取,而是编写一个工具提示。 我的实现导致垃圾显示为工具提示,而不是我想要的字符串。此外
我是 C++ 上字符串的新手,我在这方面已经有几个小时了,我去过很多论坛,所以我知道 LPSTR、LPCSTR 或 LPCSTR 是什么类型的 char*,但我找不到方式并了解如何使用它们构建字符串。
参数类型 TCHAR 与参数类型 LPSTR 不兼容。 我该如何解决这个问题?我试过转换/转换类型无济于事 void getHWID() { // GetVolumeInformationA DWOR
如何将字符串从 wchar_t 转换为 LPSTR。 最佳答案 wchar_t 字符串由 16 位单元组成,LPSTR 是指向八位字节字符串的指针,定义如下: typedef char* PSTR,
我在反转 LPSTR 时遇到了一些问题。这是我的功能: LPSTR Reverse(LPSTR a_lpText) { int nTextLength = strlen((char*)a_lpT
我在未处理的 COM 对象中有一个方法,我正在尝试编码: STDMETHOD(SomeMethod)(LPSTR** items, INT* numOfItems) = 0; 但我想不出编码 LPST
情况是这样的: 我有一个类,其中有一个方法,其中我有一个循环,每次迭代都会用一个新字母覆盖缓冲区,缓冲区的数据类型是 LPSTR。 我的问题是,如何获取循环中生成的所有字母并将它们作为字符数组返回?
我是一名优秀的程序员,十分优秀!