【问题标题】:How do you convert a Visual Studio project from using wide strings to ordinary strings如何将 Visual Studio 项目从使用宽字符串转换为普通字符串
【发布时间】:2010-10-18 03:59:07
【问题描述】:

当我创建我的 Visual Studio 项目时,它默认强制我对所有采用字符串的函数使用宽字符串。例如,MessageBox() 采用 LPCWSTR 而不是 const char*。虽然我知道它非常适合多语言和便携式应用程序,但对于我的简单小应用程序来说完全没有必要。坦率地说,在我所有的字符串周围不断输入 TEXT() 更痛苦。

是否有我可以更改的编译器选项、定义或项目设置以在我的 Visual Studio 项目中解决此问题?

【问题讨论】:

    标签: c++ c winapi visual-c++ unicode


    【解决方案1】:

    右键单击您的项目 -> 属性然后转到以下树项:

    配置属性 -> 常规

    对于 Unicode 选择:
    使用 Unicode 字符串

    对于普通的多字节选择:
    使用多字节字符集

    当您将TEXT()_T() 放在字符串周围时,您将使其与两个字符串选项兼容。如果您选择Use multi-byte character set,那么您的字符串周围不需要任何东西。如果选择Use unicode character set,则字符串前面至少需要 L。

    通过选择Use Unicode Character Strings,您还默认使用所有以 W 结尾的 Win32 API。示例:MessageBox 映射到 MessageBoxW

    当您选择Use multi-byte character set 时,默认情况下您还使用以 A 结尾的所有 Win32 API。示例:MessageBox 映射到 MessageBoxA

    【讨论】:

    • Brian,如果它以命令行参数的形式出现,你将如何用L 包装一个字符串?还是只在硬编码字符串前使用L
    • 在 VS2019 中,现在是:配置属性 -> 高级
    【解决方案2】:

    值得注意的是,您可以显式声明以下形式的宽字符串文字:

    WCHAR *s = L"Hello Wide World.";
    

    与宏 TEXT() 或 _T() 相比,它需要的击键次数更少,但即使未定义 UNICODE,也会产生宽字符串。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-08-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-17
      • 2016-06-18
      • 1970-01-01
      • 2015-07-28
      相关资源
      最近更新 更多