VC2005和vc6命令行参数的传递不同?
vc2005:
#include "stdafx.h "
#include <iostream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
if(argc <2){
cout < < "error! " < <endl;
}else{
for(int i=1; i!=argc; ++i)
{
cout < < "hello, " < <argv[i] < <endl;
}
}
getchar();
return 0;
}
=======================================================
vc6:
#include <iostream>
using namespace std;
int main(int argc, char* argv[])
{
if(argc <2){
cout < < "error! " < <endl;
}else{
for(int i=1; i!=argc; ++i)
{
cout < < "hello, " < <argv[i] < <endl;
}
}
getchar();
return 0;
}
在两个编译器里main的两个参数一样的吧`?可是在vc6编译的能正确接收传递的命令行参数并显示,vc2005的不行,显示的是十六进制的东西,为什么
[解决办法]
宽字符串了吧,你的vs2005可能定义了UNICODE宏
wcout < < argv[i] < <endl;
[解决办法]
cout < < "hello, " < <argv[i] < <endl;
你看下 argv 的类型是什么?_TCHAR* argv[]
所以argv[i]的类型是_TCHAR*,不是char*。
cout只能正确输出char*,对于宽字符串不能处理。你试下wcout行不行。
另外你对宽字符有误解。宽字符可以用两个字符存储一个普通的char,即使你输入 "huang ",每个字符也用两个字节存储。