弱弱的问一声:_T函数是什么意思 我的MSDN是e文,看了也不清楚到底这函数是干什么的,还有新手遇到这些问题该看什么中文资料呢?多谢多谢:) 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 _T的意思如下:在Windows操作系统中,以现在的版本来讲,Windows2000和WindowXP都是用Unicode字符的,也就是说一个字符占2个字节,而原来的Window98是用ASCII字符的,也就是一个字符占一个字节。这样在编程的时候就会遇到字符串转换的问题。_T是一个宏定义,用来在Unicode字符编码的时候,将你输入的字符串当作Unicode字符串,在ASCII字符编码的时候将你输入的字符串当作ASCII字符串。 TEXT()宏的另一个版本。实现宽字符。 转变成宽字符串。也就是Unicode字符 转变成宽字符串。也就是Unicode字符纠正一下。应该是转换成 MBCS。比如:TCHAR a[1] = _T("a");在PC环境下面:内存是这样的:0x61 0x00在WINCE环境下面:内存是这样的:0x00 0x61 0x00 0x00 楼上正解T不是函数,而是宏建议楼主利用VC的IDE再自己摸索一下,加深理解先用watch查看字符串的内存位置,然后查看对应memory的内容 实现Unicode字符,这样如果 "Hello"用ASCII码,占用5个字符_T("Hello")就占用10个字节,根据的是用了L"Hello!";我们平时编程是在ASCII码下编程,怎么在Unicode下编程呢如何在UNICODE下编程呢,为工程添加UNICODE和_UNICODE预处理选项(有的还说去除_MBCS,我认为不除去也可以),在编译器中进行如下的设置(1)VC.net中就是 项目 -> 属性 -> c/c++ -> 预处理器 在"预处理定义"中加入这两个宏定义(2)vc6中 project -> settings -> c/c++ -> Preprocessor definitions (3)引入TCHAR.h文件,好像不需要单独引入,windows.h中就自动引入了(4)在安装Visual Studio时,在选择VC++时需要加入unicode选项,保证相关的库文件可以拷贝到system32下(5)在Project/Setting/link/output 中设置Entry为wWinMainCRTStartup(不设置好像也可以)我们平时工作的环境是ASCII的,不是UNICODE的,比如我们调用MessageBox函数可以这样调用MessageBox(NULL, "hello", "caption", MB_OK);,但在UNICODE下这样是不行的必须用MessageBox(NULL, L"hello", L"caption", MB_OK);为什么同样是MessageBox会有这样的不同呢,原来对MessageBox进行了如下的定义#ifdef UNICODE#define MessageBox MessageBoxW#else#define MessageBox MessageBoxA#endif // !UNICODE其它的函数也进行了如此的宏定义。 OpenCV2.3.1很多例程为什么不能运行,编译也没提示错误 VC++6.0如何在对话框显示JPG图像 公交换乘算法效率问题 测试u盘速度的问题? 如何在文件中从末尾查找字符串,返回第一次找到的位置???在线!!!!!!!!!! lib文件 程序调试(在线等) 三次方程问题已经解决,继续送分!alanwang_(alan)请进 DAO中怎样使用'[]'匹配符? 两个分别运行在局域网中两台机器里的进程,其中一个进程想向另一个进程发送一个消息,有什么好方法可以办到 关于网络编程问题,请大家讨论。 求MFC图形代码
纠正一下。应该是转换成 MBCS。
比如:
TCHAR a[1] = _T("a");
在PC环境下面:内存是这样的:0x61 0x00
在WINCE环境下面:内存是这样的:0x00 0x61 0x00 0x00
T不是函数,而是宏建议楼主利用VC的IDE再自己摸索一下,加深理解
先用watch查看字符串的内存位置,然后查看对应memory的内容
如果 "Hello"用ASCII码,占用5个字符
_T("Hello")就占用10个字节,根据的是用了L"Hello!";
我们平时编程是在ASCII码下编程,怎么在Unicode下编程呢
如何在UNICODE下编程呢,为工程添加UNICODE和_UNICODE预处理选项(有的还说去除_MBCS,我认为不除去也可以),在编译器中进行如下的设置
(1)VC.net中就是 项目 -> 属性 -> c/c++ -> 预处理器 在"预处理定义"中加入这两个宏定义
(2)vc6中 project -> settings -> c/c++ -> Preprocessor definitions
(3)引入TCHAR.h文件,好像不需要单独引入,windows.h中就自动引入了
(4)在安装Visual Studio时,在选择VC++时需要加入unicode选项,保证相关的库文件可以拷贝到system32下
(5)在Project/Setting/link/output 中设置Entry为wWinMainCRTStartup(不设置好像也可以)
我们平时工作的环境是ASCII的,不是UNICODE的,比如我们调用MessageBox函数可以这样调用
MessageBox(NULL, "hello", "caption", MB_OK);,但在UNICODE下这样是不行的必须用MessageBox(NULL, L"hello", L"caption", MB_OK);为什么同样是MessageBox会有这样的不同呢,原来对MessageBox进行了如下的定义
#ifdef UNICODE
#define MessageBox MessageBoxW
#else
#define MessageBox MessageBoxA
#endif // !UNICODE
其它的函数也进行了如此的宏定义。