什么是Microsoft用作Unicode字符串的数据类型? [英] What is Microsoft using as the data type for Unicode Strings?

查看:154
本文介绍了什么是Microsoft用作Unicode字符串的数据类型?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在学习C ++,并在MSDN上发现了一篇文章:



http://msdn.microsoft.com/en-us/magazine/dd861344.aspx



在第一个代码示例中,我的问题涉及的一行代码如下:

  VERIFY(SetWindowText样品)); 

更具体地说,L前缀。我有一个小小的阅读,纠正我,如果我错了:-),但这是允许unicode字符串,即准备一个长字符集。现在在我读这篇文章的过程中,我遇到了另一篇关于C中Adavnced String Techniques的文章。 http://www.flipcode.com/archives/Advanced%5FString%5FTechniques%5Fin%5FC-Part%5FI%5FUnicode.shtml



它说有几个选项,包括头文件:

  #define UNICODE 

 在C中定义_UNICODE 

,再次指出如果我错了,感谢您的反馈。此外它显示适合这些unicode字符串的数据类型:

  wchar_t 
pre>

它混合了一个宏和一种混合数据类型,宏是:

  _TEXT(t)

混合数据类型为

  TCHAR 

它指出将允许unicode如果标题有和ASCII如果没有。现在我的问题是,或者更多的是我想确认的微软,微软使用这种TCHAR数据类型更灵活或有任何好处承诺使用wchar_t。



当我说微软使用这个,更具体地说,在ATL和WTL库中的exmaple,你自己有任何人自己偏好或有一些建议吗?



干杯,



Andrew

解决方案

你应该定义UNICODE并直接使用wchar_t。



您应该使用wchar_t和所有CRT函数的宽版本(例如:wcscmp而不是strcmp)。如果您的代码需要在ANSI和UNICODE环境中工作,我觉得代码很少需要这样做,TEXT宏和TCHAR等只是存在。



当您创建一个新的窗口应用程序使用Visual Studio UNICODE是自动定义的,wchar_t将像内置工作。


I am in the process of learning C++ and came across an article on the MSDN here:

http://msdn.microsoft.com/en-us/magazine/dd861344.aspx

In the first code example the one line of code which my question relates to is the following:

VERIFY(SetWindowText(L"Direct2D Sample"));

More specifically that L prefix. I had a little read up, and correct me if I am wrong :-), but this is to allow for unicode strings, i.e. to prep for a long character set. Now in during my read up on this I came across another article on Adavnced String Techniques in C here http://www.flipcode.com/archives/Advanced%5FString%5FTechniques%5Fin%5FC-Part%5FI%5FUnicode.shtml

It says there are a few options including the inclusion of the header:

#define UNICODE

OR

#define _UNICODE

in C , again point out if I am wrong, appreciate your feedback. Further it shows the datatype suitable for these unicode strings being:

wchar_t

It throws into the mix a macro and a kind of hybrid datatype, the macro being:

_TEXT(t)

which simply prefixes the string with the L and the hybrid data type as

TCHAR

Which it points out will allow for unicode if the header is there and ASCII if not. Now my question is, or more of an asumption which I would like to confirm, would Microsoft use this TCHAR data type which is more flexible or is there any benefit to committing to using the wchar_t.

Also when I say does Microsoft use this, more specifically for exmaple in the ATL and WTL libraries, do anyone of yourselves have preference or have some advice regarding this?

Cheers,

Andrew

解决方案

For all new software you should define UNICODE and use wchar_t directly. Using ANSI stirngs will come back to haunt you.

You should just use wchar_t and the wide versions of all the CRT functions (ex: wcscmp instead of strcmp). The TEXT macros and TCHAR etc just exist if your code needs to work in both ANSI and UNICODE environments which I feel code rarely needs to do.

When you create a new windows application using Visual Studio UNICODE is automatically defined and wchar_t will work like a built-in.

这篇关于什么是Microsoft用作Unicode字符串的数据类型?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆