定义的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");
} 展开
代码如下:这样子声明有错吗?该怎么修改?因为之前用的是多字符集编码,没有用过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");
} 展开
1个回答
2015-04-16
展开全部
考虑到诸多因素,SOCKET通信一般使用的是ASCII编码,因此,使用char数组来接收SOCKET传来的字符是没有什么问题的。
但是,从char数组到CString的转换,需要看你工程里的UNICODE宏定义。如果你使用了UNICODE,那么,就必须有一个窄字符串到宽字符串的转换,一般使用宏A2T就行了。如:
CString sTemp = A2T(szTemp);
同样,在send的时候也要注意这个问题,需要T2A.
但是,从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(')')};
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询