首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

小弟我的VC疯了,如何会出现这种现象

2012-02-24 
我的VC疯了,怎么会出现这种现象?#includestdafx.h #includeiostreamusingnamespacestdint_tmain(inta

我的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编码就好了.

热点排行