在各种c + +代码中,你经常看到string的不同用法:PWSTR,char *,std :: string,CString等等。
与任何其他stringtypes相比,什么时候使用PWSTR是最佳时机?
一个PWSTR将是一个wchar_t
字符串指针。 这是一个UNICODE(通常是UCS2)字符串,每个字符需要16位。
char*
将是一个指针,每个字符8位。 这可能是ASCII,ANSI,UTF8或其他数百种其他编码之一。 尽管如果您需要字符串来保存英语以外的语言或特殊符号,您只需要担心编码。
一般来说,Windows API在内部都是UNICODE,因此大多数Windows程序员都使用wchar字符串。 但是,如果正确的符号是#defined
,那么std::string
和CString
都可以是UNICODE,所以你在PWSTR
, std::string
和CString
之间的选择将是一个偏好问题或你使用的代码库约定。
无论您正在使用哪个库,都需要PWSTR
。 根据Windows中使用的命名约定,这是一个指向宽字符串的指针。
默认情况下,你应该使用std::string
/ std::wstring
。 只有当你与别人期望别的东西交流时,你才应该改变它。
你可以用c_str()
方法从std::wstring
获得一个PCWSTR
。 CString
是MFC,如果我记得。
PWSTR =在窗口中指向宽字符串= WCHAR *的指针
Windows SDK在类型和指向类型的指针的typedefs上非常安静。
“在罗马时” – 使用任何你正在处理的项目所需的字符串类型。 字符串类型不足以强调或尝试强制使用任何正在使用的方法。
它来自Windows API。
我记得这样。
它是一个W -ide字符串的P -toter。
它将用于Unicode应用程序。 它的用途是当你打电话给Windows。 最好的类型实际上是LPTSTR
P指向T型的字符串(Unicode或ANSI)。
使用PWSTR的最佳时间是如果所有正在编辑/扩展的代码已经在使用它。 通常最好将代码保存在你正在编写的任何代码的范例中。
同样的,如果你正在大量使用以特定方式声明其字符串的特定库,那么通常最好将这种类型的字符串保存在自己的代码中。 所以使用Windows MFC,你会使用CString。 旧式的Win32通常是LPCTSTR和类似的。
这通常是风格问题,而不是特定的实现细节。
PWSTR
是来自<windows.h>
某个标识符。 在处理需要这样的事情的Windows API函数时最好使用它,并且最好避免使用它。
看一下Windows SDK中的WinNT.h文件 – 你会发现PWSTR是WCHAR *的一个typedef。 这不是一个宏观。