VC ++中的Unicode字符串的语法是什么?

时间:2011-09-19 18:36:16

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

你应该如何在VC ++中使用unicode字符串?当然你应该#define UNICODE,但你的字符串怎么样?

是否应在所有文本周围使用TEXT()或_T()宏,还是应该在字符串前放置一个L?我相信所有程序现在应该使用unicode,所以使用L前缀不是最干净吗?

评论

3 个答案:

答案 0 :(得分:2)

这取决于你想要达到的目标。如果您想确保您的代码在使用和不使用Unicode时都能正常编译和使用,请使用TEXT_T宏,并调用“默认”Win32函数名称(例如{{1} })。

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

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

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

答案 1 :(得分:1)

使用L前缀声明Unicode字符串文字。

当您希望单个源代码编译为Unicode和非Unicode版本的Windows(Windows 9x)时,TEXT()_T()宏是过去的糟糕时期。值得庆幸的是,您今天可以安全地忽略Windows 9x。

答案 2 :(得分:1)

我刚才学到的东西:

黄金法则:

不要与框架作斗争。

执行框架的目的 - 如果使用Windows,请使用_T,使代码独立于字符类型。如果您使用的是Linux,请使用UTF-8。如果您有跨平台框架,请执行任何操作。但是,除非你有真正的理由,否则不要试图发明自己的东西。 (通常不值得努力反对框架。)