我在VS2005中运行C ++程序,并且我在项目属性中只设置了一个参数 - >调试 - >命令行参数,例如它名为profile1.dll
。
这是一段代码片段
cout<<"number of arguments:" << argc<<endl;
for (int i=0; i<argc; i++)
cout << "argument " << i << ": " << argv[i] << endl;
在输出中我得到了
number of arguments:2
argument 0: c
argument 1: p
不知道为什么它不打印参数的名称?
答案 0 :(得分:5)
你的exe名称是否以C开头?如果你期望一个字符串并且你只得到一个字符,那通常是因为你发现UTF-16 Unicode中的西方字母有效地在交替的ANSI字符之间放置了0。你在编译Unicode吗?
答案 1 :(得分:3)
argv[0]
是您的计划的名称。 argv[1]
是第一个参数。听起来您已将main()中的相关参数声明为char* argv
而不是char *argv[]
或char **argv
。
答案 2 :(得分:1)
离开TCHAR,没关系。
如果使用unicode编译,请使用wcout输出:
int _tmain(int argc, _TCHAR* argv[])
{
for (int i=0; i<argc; i++)
wcout << "argument " << i << ": " << argv[i] << endl;
return 0;
}
否则在没有unicode的情况下编译,你的代码将按原样运行(并且不适用于unicode参数:o)
您可以在“项目属性/常规/字符集”中找到设置
答案 3 :(得分:0)
您可以放置main
功能的原型吗?你在做什么显然很好。
确保您的主要功能原型类似于:
int main(int argc, char **argv)
希望它有所帮助。