C++ 在Visual Studio C+;中读取程序参数时出现问题+;

C++ 在Visual Studio C+;中读取程序参数时出现问题+;,c++,visual-studio,C++,Visual Studio,我在VS2005中运行C++程序,在ProjtProjks:>调试->命令行ARG中只设置了一个参数,例如,它被命名为“代码> Prrule1.DLL< /Cube >。p> 下面是一段代码片段 cout<<"number of arguments:" << argc<<endl; for (int i=0; i<argc; i++) cout << "argument " << i << ": " &

我在VS2005中运行C++程序,在ProjtProjks:>调试->命令行ARG中只设置了一个参数,例如,它被命名为“代码> Prrule1.DLL< /Cube >。p> 下面是一段代码片段

cout<<"number of arguments:" << argc<<endl;

for (int i=0; i<argc; i++)
       cout << "argument " << i << ": " << argv[i] << endl;

不知道为什么它不打印参数的名称?

你能把
主函数的原型放进去吗?你所做的显然是好的

确保main的功能原型类似于:

int main(int argc, char **argv)

希望有帮助。

您的exe名称是否以C开头?如果您希望得到一个字符串,但只得到一个字符,通常是因为您发现UTF-16 Unicode中的西方字母表在交替的ANSI字符之间有效地放置了一个0。是否为Unicode编译?

argv[0]
是您的程序名
argv[1]
是第一个参数。听起来您在main()中将相关参数声明为
char*argv
,而不是
char*argv[]
char**argv

离开TCHAR就可以了

如果使用unicode编译,请使用wcout进行输出:

int _tmain(int argc, _TCHAR* argv[])
{

  for (int i=0; i<argc; i++)
    wcout << "argument " << i << ": " << argv[i] << endl;

    return 0;
}
int-tmain(int-argc,_-TCHAR*argv[]
{

对于(int i=0;我猜您的主方法的argv类型是char*,而不是char**)。如果没有看到您的主方法decl,就无法确定。我认为Bob的答案是正确的。您使用的是UNICODE,0阻止您打印整个字符串。使用UNICODE的函数打印字符串。
int\tmain(int-argc,char*argv[])//_TCHAR*
因此,默认情况下,argv[]是_TCHAR*,但如果是这样,它是一个整数,所以我将其更改为char*@Kobac:将其更改回TCHAR,并使用std::wcout而不是std::coutNow我知道发生了什么。您使用的是UNICODE,0阻止您打印整个字符串。请检查Bob的答案。我使用的是UNICODE。我将其更改为多字节,但仍然相同output@Kobac:当我们在使用Unicode时,您应该使用std::wcout而不是std::cout。但是OP在回答Pablo的答案时已经说,他已经将其声明为char*argv[]。这里有些不对劲。@kobac:谢谢您接受我的答案,但正如指出的,这不是您问题的原因。您能接受@Bob Moore的答案吗?
int _tmain(int argc, _TCHAR* argv[])
{

  for (int i=0; i<argc; i++)
    wcout << "argument " << i << ": " << argv[i] << endl;

    return 0;
}