手机显示的语言咋改成中文10?如何记忆 C/C++ 中各类字符串类型之间的转换

时间:2018-02-13 16:06:04   浏览:次   点击:次   作者:   来源:   立即下载

我买了个③星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 若是频繁用到,看定义都麻烦. 所以最好自己稍微做封装①下. 以后直接用自己封转后的版本就好了.

收起

相关推荐

相关应用

平均评分 0人
  • 5星
  • 4星
  • 3星
  • 2星
  • 1星
用户评分:
发表评论

评论

  • 暂无评论信息