我的VC疯了,怎么会出现这种现象?
#include "stdafx.h "
#include <iostream>
using namespace std;
int _tmain(int argc, _TCHAR * argv[])
{
cout < < *(argv[0]) < < endl;
printf( "function name is %s\n ",argv[0]);
return 0;
}
我的程序名为copy,它总是打出99或c,调试发现argv里面的值为99L 'c,怎么回事?
[解决办法]
默认使用了UNICODE编码,必须用unicode的相应输出函数.
printf按ANSI编码输出一个unicode编码的字串.由于字符之间被填充了0,所以只能输出一个字符.
[解决办法]
全部使用_t版本的函数就不会出错了,_t版本的函数会根据UNICODE宏的定义情况来选择相应的宽字符版本的函数或ASCII版本的函数
#include "stdafx.h "
#include <iostream>
using namespace std;
int _tmain(int argc, _TCHAR * argv[])
{
cout < < *(argv[0]) < < endl;
_tprintf( "function name is %s\n ",argv[0]);
return 0;
}
[解决办法]
常量字符串也最好也要用_T()括起来
#include "stdafx.h "
#include <iostream>
using namespace std;
int _tmain(int argc, _TCHAR * argv[])
{
cout < < *(argv[0]) < < endl;
_tprintf(_T( "function name is %s\n "), argv[0]);
return 0;
}
[解决办法]
:)
[解决办法]
进入工程选项设置字符集
[解决办法]
直接使用ascii编码就好了.