vc++中Unicode字符串的语法
Which syntax for Unicode strings in VC++?
如何在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。如果你有一个跨平台的框架,那就使用它。但是不要试图发明你自己的东西,除非你有一个真正的好理由。(通常不值得针对框架进行工作)
相关文章:
- 提升灵气 - C++ 字符串解析语法
- main.cpp(11):错误 C2059:语法错误:"字符串"
- 为什么具有两个元素的发起器语法将一个元素而不是两个元素放入字符串向量中?
- C++ std::字符串语法 "new (&y) std::string(x);"
- QSqlQuery ctor 或 prepare() 语法,当超过 1 个字符串文字时
- 从字符串中解析复数,考虑语法变化
- 用Osttream语法双串到字符串
- 精神语法按字符数量分解字符串
- c字符串与具有类成员函数的字符串类语法
- 将xml字符串嵌套到xml元素中的语法
- 语法错误字符串方法C++
- 当我的着色器文件的所有信息都被正确读取到字符串中并且语法正确时,OpenGL为什么会出现语法错误
- 错误C2059:语法错误:'字符串'
- 如何解决错误 C2059:语法错误:"字符串""
- 字符串流格式语法
- 解析字符串对失败.坏脾气x3语法
- vc++中Unicode字符串的语法
- 为什么 javascript 中不使用字符串循环的C++语法?
- 如何在Vim中从语法高亮显示中排除c++原始字符串文字
- 字符串函数定义的语法