none
命令行参数 RRS feed

  • 问题

  • 在vs2008中如何命令行参数的输入有固定的格式要求吗?应该怎样输入?
    • 已移动 Andrew.Wu 2011年5月26日 8:48 (发件人:Visual Studio 相关讨论(Visual Studio 2010以前版本))
    2011年5月26日 0:45

答案

  • 恩,我知道在什么地方输入,问题是,我不知道该输入什么参数?


    参数是个字符串数组,每个参数之间用空格来分隔开来。比如下面的例子打印提供的命令行的各个参数信息:
    #include <iostream> 
    using namespace std;
    int main(int argc, char* argv[]) { 
      cout << "argc = " << argc << endl; 
      for(int i = 0; i < argc; i++) 
       cout << "argv[" << i << "] = " << argv[i] << endl; 
      return 0; 
    }
    说明:argv[0] 显示的是当前exe的路径信息,argc的值至少大于等于1
    

    Visual C++ enthusiast, like network programming and driver development. At present is being engaged in the WinCE/Windows Mobile platform embedded development.
    2011年5月30日 3:08
    版主
  • cout 是输出至标准设备,通常是屏幕。。endl 简单来说是一个换行符。。

     

    建议随便找一本关于 C++ or  Standard C++ Library Reference 的书看一下。。通常头一两章都有很详细的说明。


    学习学习....
    2011年6月1日 3:46
  • 你好,

     

    cout C++ 标准输出函数, 它是从输出流取出字符并显示。<< 是输出流的操作符号,它的顺序是从左到右,例如:cout << “hello” << “world” <<endl; 最后的输出为 helloworld

    endl 结束一行以及清楚缓存,同时它还包含了一个’\n’ 更多详细资料您可以参阅以下地址:

    1. http://msdn.microsoft.com/zh-cn/library/28675tyt(v=VS.100).aspx

    2. http://msdn.microsoft.com/en-us/library/zzc72txb(v=VS.100).aspx

     

    int main(int argc, char* argv[])中,需要传入命令行参数,你可以在运行时看错,在cmd中输入了程序的地址以启动程序,例如:C:\Users\jwpan>c:\text.exe 同时在for(int i = 0; i < argc; i++)

       cout << "argv[" << i << "] = " << argv[i] << endl; 标注了需要通过for循环来 输出有多少个命令参数。 所以最终得到了程序地址。

     

    希望我的解答能够帮助您解决您的问题。如有任何不明白之处,欢迎您告诉我。

     


    Rob Pan [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2011年6月1日 6:13

全部回复

  • 你好

    不知道以下的文章能不能幫到你

    http://www.pconline.com.cn/pcedu/empolder/gj/c/0503/565621.html

    Please correct me if my concept is wrong


    Chi
    • 已建议为答案 Rob Pan 2011年5月26日 8:52
    2011年5月26日 3:36
  • 你好,

    我把这篇帖子移到了VC++这边,你可以在这边得到更好的支持。

    谢谢你的理解。


    Andrew Wu [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2011年5月26日 8:49
  • 谢谢,可是根据程序如何输入命令行参数呢?
    2011年5月27日 2:09
  • 您是想提供参数输入吗?VS2008下,Project/XX Properties..打开您的工程属性页,在左边的Configuration Properties下看到Debugging,在右边的Command Arguments中输入您要提供的参数信息即可。

    Visual C++ enthusiast, like network programming and driver development. At present is being engaged in the WinCE/Windows Mobile platform embedded development.
    2011年5月30日 0:24
    版主
  • 恩,我知道在什么地方输入,问题是,我不知道该输入什么参数?

    2011年5月30日 2:54
  • 恩,我知道在什么地方输入,问题是,我不知道该输入什么参数?


    参数是个字符串数组,每个参数之间用空格来分隔开来。比如下面的例子打印提供的命令行的各个参数信息:
    #include <iostream> 
    using namespace std;
    int main(int argc, char* argv[]) { 
      cout << "argc = " << argc << endl; 
      for(int i = 0; i < argc; i++) 
       cout << "argv[" << i << "] = " << argv[i] << endl; 
      return 0; 
    }
    说明:argv[0] 显示的是当前exe的路径信息,argc的值至少大于等于1
    

    Visual C++ enthusiast, like network programming and driver development. At present is being engaged in the WinCE/Windows Mobile platform embedded development.
    2011年5月30日 3:08
    版主
  • 您好,这里的count和endl1表示什么含义?怎么有这么多的“<<”是从左至右的顺序左移吗?如何从程序看出是路径信息?不好意思,我新手,问一下简单的问题,麻烦您给指点一下!

    2011年5月31日 2:52
  • cout 是输出至标准设备,通常是屏幕。。endl 简单来说是一个换行符。。

     

    建议随便找一本关于 C++ or  Standard C++ Library Reference 的书看一下。。通常头一两章都有很详细的说明。


    学习学习....
    2011年6月1日 3:46
  • 你好,

     

    cout C++ 标准输出函数, 它是从输出流取出字符并显示。<< 是输出流的操作符号,它的顺序是从左到右,例如:cout << “hello” << “world” <<endl; 最后的输出为 helloworld

    endl 结束一行以及清楚缓存,同时它还包含了一个’\n’ 更多详细资料您可以参阅以下地址:

    1. http://msdn.microsoft.com/zh-cn/library/28675tyt(v=VS.100).aspx

    2. http://msdn.microsoft.com/en-us/library/zzc72txb(v=VS.100).aspx

     

    int main(int argc, char* argv[])中,需要传入命令行参数,你可以在运行时看错,在cmd中输入了程序的地址以启动程序,例如:C:\Users\jwpan>c:\text.exe 同时在for(int i = 0; i < argc; i++)

       cout << "argv[" << i << "] = " << argv[i] << endl; 标注了需要通过for循环来 输出有多少个命令参数。 所以最终得到了程序地址。

     

    希望我的解答能够帮助您解决您的问题。如有任何不明白之处,欢迎您告诉我。

     


    Rob Pan [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2011年6月1日 6:13
  • 好的 谢谢你。。
    2011年6月1日 23:32
  • 您好!你的回复:“cout << "argv[" << i << "] = " << argv[i] << endl; 标注了需要通过for循环来 输出有多少个命令参数。 所以最终得到了程序地址。”

    请问1、红色字体和引号有什么特殊含义?

    2、为什么最终得到程序的地址,请您详细的解释一下好吗?

    2011年6月3日 7:52
  • 你好,

     

    1. 由于cout << 后需要 一个字符串,所以可以用“”包含需要输出的内容。你可以看做string tmp = argv[----> cout<<tmp; 红色是由于在Visual Studio 中编辑的缘故。没有特殊含义。

     

    2. 启动一个应用程序,需要得到该应用程序的地址。例如C:/1.exe。所以当你运行一个应用程序的时候,如果没有其他参数,程序将会得到一个参数,即地址。在上述例子中的程序入口int main(int argc,char* argv[]),定义了2个参数,argc是参数数量,argv是参数。所以在上述例子中,argc1argv[0] = "程序地址"。所以在循环输出时,就会得到了地址。

     

    此外为了更好的帮助您解决您的疑问,同时也帮助其他用户查找和参与MSDN论坛。 您可以开辟一个新的帖子来提出您的疑问。我们将乐意为您解答。

     

    如有任何不明,请及时告示我,谢谢。


    Rob Pan [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2011年6月3日 8:07
  • 您好!

    请问argc的值为什么是1?

    2011年6月3日 8:17
  • 你好,

    因为在你启动程序的时候,只提供了程序地址一个参数。例如,

    在运行中输入cmd,然后在命令窗口中,输入C:/1.exe 这样就可以启动在c盘的1.exe程序。这时,你只传递了一个C:/1.exe 作为参数给应用程序。

    又例如,当你的程序需要多个参数,以达到不同的功能,你可以在命令行中输入 C:/1.exe hello good 这时,你就给应用程序传递了3个参数。

     

    希望我的回答能够解决您的疑问


    Rob Pan [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2011年6月3日 8:21
  • 恩,非常感谢,不过我的命令行输入的地方是在vs2008软件--工程--属性--调试下的地方输入的,不知道这两种途径有什么不同?
    2011年6月3日 8:28
  • 你好,

    没什么不同,这个是Visual Studio 2008 自带的,配有VS环境的命令行。你也可以在开始菜单-》所有程序-》Visual Studio 2008工具中找到同样的命令行


    Rob Pan [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2011年6月3日 8:30
  • 再次对您的热心回答表示感谢!
    2011年6月3日 8:32