vc++中Unicode字符串的语法

Which syntax for Unicode strings in VC++?

本文关键字:语法 字符串 Unicode vc++      更新时间:2023-10-16

如何在vc++中使用unicode字符串?当然你应该#define UNICODE,但是你的字符串呢?

应该在所有文本周围使用TEXT()或_T()宏,还是应该在字符串前面放一个L ?我认为现在所有的程序都应该使用unicode,所以使用L前缀不是更干净吗?

的意见吗?

这取决于你想要实现什么。如果你想确保你的代码在使用或不使用Unicode时都能正确编译和工作,请使用TEXT_T宏,并调用"默认的"Win32函数名(例如CreateWindow)。

如果你想确保你的程序总是使用Unicode API,那么你应该在你的字符串前面使用L前缀,并调用Win32函数的宽版本(如CreateWindowW)。

在后一种情况下,无论是否定义了UNICODE,您都将获得unicode行为。在前一种情况下,应用程序将根据是否定义了UNICODE来改变其行为。

我同意你的观点,非unicode版本自Win98以来就没有真正相关了,所以我选择第二种方法。

声明带有L前缀的Unicode字符串。

TEXT()_T()宏是为旧的糟糕的日子,当你想要单一的源代码编译Unicode和非Unicode版本的Windows (Windows 9x)。值得庆幸的是,你现在可以放心地忽略Windows 9x了。

前段时间我学到了一些东西:

黄金法则:

不要抵触框架

按照框架的设计去做——如果你使用Windows,使用_T,使你的代码独立于字符类型。如果您在Linux上,请使用UTF-8。如果你有一个跨平台的框架,那就使用它。但是不要试图发明你自己的东西,除非你有一个真正的好理由。(通常不值得针对框架进行工作)