我有一个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
拆分为 vector 或类似函数,其功能与具有4 0 1
这样的三个输入参数的函数相同,因此我的代码行:int in_arg = argv[i];
...可以指向类似以下的内容:
int in_arg = new_vector[i];
我只涉足C++,所以如果我问基本问题,我深表歉意。
谢谢
最佳答案
如果您已经知道第一个参数很简单,可以将其复制到字符串中,然后使用C++提供的迭代选项之一进行访问,那么我使用的是foreach类型循环:
#include <iostream>
#include <vector>
int main(int argc, char** argv)
{
if(argc < 2){
std::cout << "Not enough arguments"; //<-- args check
return 0;
}
std::string s1;
s1 = argv[1]; //<-- copy argument to a string type to use string iterator
std::vector<int> args_vector;
for (char c : s1) {
args_vector.push_back(c - '0'); // convert char to integer and save it in vector
}
for(int i: args_vector){ // print the args in integer format, 1 by 1
std::cout << i << " ";
}
return 0;
}
关于c++ - 使用C++将命令行参数拆分为参数/vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60156355/