【发布时间】:2023-03-21 01:35:01
【问题描述】:
我们可以通过 C++ 中的argv 代码访问命令行参数,我知道。
但问题是,如果一个参数包含空格,那么我的程序就像有两个参数一样工作。
例如,如果参数是foo bar,我的程序会看到两个参数(foo 和bar)。
这是我的代码:
string strParameter = string(argv[1]);
那么,我该怎么办?
【问题讨论】:
-
通常你需要把它放在引号里。详细信息可能取决于您使用的操作系统。
-
据我所知,只有少数几个应用程序会尝试智能地解析命令行中不应该包含在引号中的参数。记事本就是一个例子。但其他 99.9% 的程序依赖调用者在引号中传递
"foo bar"。只需优化用户以根据需要使用引号中的参数正确调用您的程序。没有人会抱怨。 -
一个特殊情况:如果文件名后面没有其他参数,并且文件名周围没有引号,那么为什么不使用
argc遍历argv作为限制并附加到您的字符串? -
在Windows上可以调用
GetCommandLine获取原始命令行,然后再拆分成argv。
标签: c++ whitespace argv dev-c++ argc