手机显示的语言咋改成中文10?如何记忆 C/C++ 中各类字符串类型之间的转换
我买了个③星i⑨①⑨②的水货手机,欧版的··恢复出厂设置后不知道怎么改正中文的了
进去后选第①个,然后找到Chinese进入设置,看到①个la开头的就是语言选项
设置里,语言输入法,选择中文就行,或者你给个截图,我给你看看
设置里面改
先记最原始的 ANSI 字符串 LPSTR, 被定义成 char *.
LPCSTR 比 LPSTR 多了个 C, 意思是 const, 所以 LPCSTR 是 const char *.
后来 XP 后 微软又把所有 API 增加了 Unicode 版本(实际是重新开发), 于是在 LPSTR 基础上
加了个 W ,即 LPWSTR, 被定义成 wchat_t.
同理 LPCWSTR 被定义成 const wchar_t *.
可是怎么兼容 以前的 ANSI 版本的 API 呢? 微软用 带 T 的宏 来解决的。
如果 定义了Unicode
那么
TCHAR 被定义成 WCHAR (就是 wchar_t)
LPTSTR 被定义成 LPWSTR (wchar_t *)
LPCTSTR 被定义成 LPCWSTR (const wchar_t *)
否则 /* 那就是用了 ANSI 版本了 */
TCHAR 被定义成 CHAR (就是 char 了)
LPTSTR 被定义成 LPSTR (char *)
LPCTSTR 被定义成 LPCSTR (const char *)
对应的,实际的函数名 以 A 结尾的 对应 ANSI 版本,而以 W 结尾的 对应的 Unicode 版本.
(其实 ANSI 版本现在都是 将参数先转成 宽字符,再调用 Unicode 版本)
比如 MessageBoxA 和 MessageBoxW
最后我们用的 MessageBox, 其实也是宏:
如果 定义了Unicode
那么
MessageBox 就是 MessageBoxW
否则
MessageBox 就是 MessageBoxA
在平时的时候,char * 与 const char * 之间的显式转换很少, 即使用到也很容易转.
偶尔麻烦的就是 ANSI 和 Unicode 之间的转换,有俩API:
Unicode- > ANSI: WideCharToMultiByte
ANSI- > Unicode: MultiByteToWideChar
说真的,这俩 API 若是频繁用到,看定义都麻烦. 所以最好自己稍微做封装①下. 以后直接用自己封转后的版本就好了.
- 5星
- 4星
- 3星
- 2星
- 1星
- 暂无评论信息