C++怎么获取整个命令行参数

例如 命令行中输入file.exe c:\file message\
注意file 与message中间有两个空格或更多,用argv参数是不行的。
如何实现?

  把存在空格的路径名加上双引号就行了。
  在命令行中给定的参数就是命令行参数。(即从输入位置角度理解)

  在加载主类时,给定的参数。(有main方法的类称为主类,而命令行参数都是送给main方法的,所以也可以说命令行参数是送给main方法的参数)。
  如: java Test1 365 156 "China"
  (以上Test1必须为主类,否则不能运行)
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-08-11
把存在空格的路径名加上双引号就行了。追问

除了这种方法呢,有没有可以调用的函数,可以直接获取整条命令,因为别人不会知道要加双引号

追答

熟悉 dos 的人肯定都知道要加双引号。如果你希望不加双引号也可以,那你就得增加一些代码,没有现成的函数可以直接获取整条命令,不过你可以自己写:只要遍历整个argv数组然后逐项加到一个初始为空的 string 上就行了。你的代码要检测 argv[1] 和 argv[2] 是被空格分隔了的同一个参数,还是两个参数。

追问

我尝试了自己写,但是问题来了,argv[1] 和 argv[2]之间用一个空格连接还是多个,我想检索某路径下的文件总数,但有的文件名中不排除有一个或多个空格(win7下),这则么办呢

追答

那这就没办法了,你还是使用双引号吧,既简单又实际。如果你还要制定其他输入的规则,才能使你正确地提取文件路径和文件名,倒不如直接在文件路径上加双引号。

本回答被提问者采纳