代码之家  ›  专栏  ›  技术社区  ›  Brian T Hannan

究竟什么是PWSTR,为什么使用这个命名与CAR*、STD::String或C++中的cString比较?

  •  6
  • Brian T Hannan  · 技术社区  · 15 年前

    在各种C++代码中,经常会看到字符串的不同用法:PWSTR、CHAR*、STD::String、CString等…

    与任何其他字符串类型相比,使用pwstr的最佳时间是什么时候?

    7 回复  |  直到 10 年前
        1
  •  5
  •   Max Kielland    10 年前

    pwstr是 wchar_t 字符串指针。这是一个Unicode(通常是ucs2)字符串,每个字符取16位。

    char* 将是一个指针,每个字符8位。这可以是ASCII、ANSI、UTF8或其他数百种编码中的一种。尽管您只需要担心编码,如果您需要字符串来保存英语或特殊符号以外的语言。

    通常,Windows API在内部都是Unicode,因此大多数Windows程序员使用wchar字符串。但是 std::string CString 如果正确的符号为 #defined ,所以您可以选择 PWSTR , STD::字符串 字符串 将是一个优先事项或与您合作的代码库的惯例。

        2
  •  4
  •   GManNickG    15 年前

    当你工作的任何一个图书馆想要一个 PWSTR . 根据Windows中使用的命名约定,这是指向宽字符字符串的指针。

    默认情况下,您应该使用 std::string / std::wstring . 只有当你和其他人接触时,你才应该改变它。

    你可以得到一个 PCWSTR 从A STD:: c_str() 方法。 CString 是MFC,如果我记得的话。

        3
  •  2
  •   Terry Mahaffey    15 年前

    pwstr=指向宽字符串的指针=wchar*在Windows中

    对于类型和指向类型的指针,WindowsSDK非常依赖typedef。

    “在罗马时”—使用您正在处理的项目所需的任何字符串类型。字符串类型并不重要,不足以强调或试图迫使您的一个真正的方法在任何正在使用的。

        4
  •  1
  •   Daniel A. White    15 年前

    它来自Windows API。

    我记得像这样。

    它是一个 -指向 W IDE字符串。

    它将在Unicode应用程序中使用。它的用途是当您调用Windows时。最好的类型是 LPTSTR P -指向 T -类型化字符串(Unicode或ANSI。

        5
  •  1
  •   Sam Holloway    15 年前

    使用pwstr的最佳时间是,如果您正在编辑/扩展的所有代码都已经在使用它。通常最好将代码保持在您正在处理的任何代码的范式中。

    同样,如果您大量使用以某种方式声明其字符串的特定库,那么通常最好在您自己的代码中保留这种类型的字符串。所以使用Windows MFC,您将使用CString。旧样式的win32通常是lpctstr和类似的。

    它通常是样式问题,而不是特定的实现细节。

        6
  •  1
  •   sbi    15 年前

    PWSTR 是来自中某个位置的标识符 <windows.h> .在处理需要这样做的WindowsAPI函数时,最好使用它,否则最好避免使用它。

        7
  •  0
  •   Nemanja Trifunovic    15 年前

    看看windows sdk中的winnt.h文件,你会发现pwstr是wchar*的typedef。它不是宏。