【问题标题】:Win32 development - String related datatypes in C++Win32 开发 - C++ 中与字符串相关的数据类型
【发布时间】:2010-12-29 04:30:20
【问题描述】:

我打算从 Win32 应用程序开发开始。在我得到第一个窗口显示之前,我已经准备好放弃了!在编写简单的 WinMain 和 WndProc 之前需要了解的数据类型的数量让我不知所措。 (当然,除非你复制粘贴!)

尤其是这些——

LPSTR

LPCSTR

LPWSTR

LPCWSTR

谁能指出我正确的文章来解释这些与 Win32 编程相关的内容?我应该知道哪些,在什么情况下需要哪些,什么时候使用 Unicode,什么是多字节字符集,以及所有相关的东西。

在调用 Win32 API 函数时,将这些数据类型转换为 char* 和 char[] 等是很痛苦的。

一切都那么混乱。

感谢您的帮助。

【问题讨论】:

  • 不要忘记 BSTR、_wchar_t 或许多包装类:CComBstr、CString、CAtlString、STL::String、_bstr_t。 C++ 最好的事情是编写自己的字符串实现;)
  • 好吧,你简直让我头晕目眩……
  • 根据您使用的平台,您通常只需要一两个。对于 Windows 开发 _bstr_t 和 CString 是我最终使用的大部分。

标签: string winapi pointers types character-encoding


【解决方案1】:

图案比较简单:

LPSTR = char 的以零结尾的字符串

LPCSTR = constant 以零结尾的字符串char (C == constant)

LPWSTR = wchar_t 的以零结尾的字符串(W == 宽字符)

LPCWSTR = constant 以零结尾的wchar_t 字符串(C 和 W)

有关详细信息和说明,请参阅例如http://www.codeproject.com/KB/string/cppstringguide1.aspx

链接的文章还包含在您的应用程序中何时使用 Unicode 以及何时不使用的建议。

【讨论】:

  • +1 - 嘿,刚刚看了这篇文章。看起来它回答了我的很多字符串/字符集问题。谢谢! :)
  • 不客气。是的,一开始这很荒谬,但过了一段时间就会有某种意义。
  • 浏览它... 就好像那篇文章是定做的! :) 不能要求更多。
猜你喜欢
  • 1970-01-01
  • 2012-07-13
  • 2018-05-29
  • 1970-01-01
  • 2021-12-14
  • 2018-01-29
  • 2023-03-23
  • 1970-01-01
  • 2012-09-13
相关资源
最近更新 更多