我有一个C ++项目,以前曾用这样的代码接收多个命令行参数:
int main(int argc, char* argv[])
{
for (int i = 1; i < 4; i = i + 1)
{
//do some stuff with argv[i]
int in_arg = m[argv[i]];
}
return 0
}
使用此代码,示例命令行参数可能是:
C:\MyFolder\MyExecutable.exe 4 0 1
但是,由于将此代码插入到更广泛的项目中,因此我的命令行现在必须看起来像这样:
C:\MyFolder\MyExecutable.exe 401
[如何将参数401
拆分为向量或类似函数,其功能与具有三个输入参数,例如4 0 1
相同,所以我的行:
int in_arg = argv[i];
...可以指向类似以下内容的东西:
int in_arg = new_vector[i];
我只涉猎C ++,如果我问基本问题,我深表歉意。
谢谢
您可以根据参数创建strings
,然后逐个字符地浏览它们:
#include <iostream>
#include <string>
#include <vector>
int cppmain(std::string program, std::vector<std::string> args) {
std::cout << program << " got arguments:\n";
for(auto& arg : args) { // each argument as a string
std::cout << " " << arg << "\n";
for(char ch : arg) { // each char in the current string
std::cout << " " << ch << '\n';
}
}
return 0;
}
int main(int argc, char* argv[]) {
return cppmain(argv[0], {argv + 1, argv + argc});
}
输入:
./program 401
输出:
./program got arguments:
401
4
0
1