定义的char字符数组在VS2013的unicode编码环境下遇到的问题

执行时崩溃了,于是在调试下出现这样的:0x595BD8D2(mfc120ud.dll)(CalculatorTest.exe中)处有未经处理的异常:0xC0000005:... 执行时崩溃了,于是在调试下出现这样的:0x595BD8D2 (mfc120ud.dll) (CalculatorTest.exe 中)处有未经处理的异常: 0xC0000005: 读取位置 0x00000000 时发生访问冲突。
代码如下:这样子声明有错吗?该怎么修改?因为之前用的是多字符集编码,没有用过unicode,但是项目需要,就出现了这个访问冲突的问题,求解答!!
#include <afx.h>
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>
#define N 100

TCHAR s[N + 1] = { _T('√') ,_T('('),_T('4'),_T(')')};
TCHAR oper_num[3] = { _T('√'), _T('∑'), _T('∏') }; //支持根号
WCHAR *lib[] = { _T("sin"), _T("cos"), _T("tan"), _T("lg"), _T("ln"), _T("log") , _T("x") , _T("sum")}; //支持的函数列表

void main()
{
TCHAR s1 = s[0];
system("pause");

}
展开
 我来答
匿名用户
2015-04-16
展开全部
考虑到诸多因素,SOCKET通信一般使用的是ASCII编码,因此,使用char数组来接收SOCKET传来的字符是没有什么问题的。

但是,从char数组到CString的转换,需要看你工程里的UNICODE宏定义。如果你使用了UNICODE,那么,就必须有一个窄字符串到宽字符串的转换,一般使用宏A2T就行了。如:
CString sTemp = A2T(szTemp);

同样,在send的时候也要注意这个问题,需要T2A.
追问
我没有从char数组转换到CString啊,TCHAR在unicode是wchar_t吧?我只是想知道不能这样声明一个字符数组吗?TCHAR s[N + 1] = { _T('√') ,_T('('),_T('4'),_T(')')};
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式