使用 C++ 将命令行参数拆分为参数/向量
Split command line argument into arguments/a vector using C++
我有一个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:MyFolderMyExecutable.exe 4 0 1
但是,由于将此代码插入到更广泛的项目中,我的命令行现在必须如下所示:
C:MyFolderMyExecutable.exe 401
如何将参数401
拆分为一个向量或类似内容,该向量在功能上与具有三个输入参数(如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;
}
你可以从参数中创建string
,然后逐个字符地浏览它们:
#include <iostream>
#include <string>
#include <vector>
int cppmain(std::string program, std::vector<std::string> args) {
std::cout << program << " got " << args.size() << " argument(s):n";
for(auto& arg : args) { // each argument as a string
std::cout << " " << arg << 'n';
for(char ch : arg) { // each char in the current argument
if(ch < 0) continue; // skip negative char:s
int in_arg = m[ch]; // assuming it was: int in_arg = m[*argv[i]];
// use in_arg
}
}
return 0;
}
int main(int argc, char* argv[]) {
//
// string from char*
// |
// V
return cppmain(argv[0], {argv + 1, argv + argc});
// ^ ^
// | |
// vector<string> from char*[]
}
相关文章:
- 我使用向量来创建类对象列表.初始化向量时如何使用参数调用构造函数?
- 标准::向量声明中使用的模板参数
- 使用 C++ 将命令行参数拆分为参数/向量
- 如何在 c++ 中定义接受不同参数类型的函数向量?
- 如何将向量中的可变参数转换为参数的持有者?
- C++向量默认为成员参数
- 使用向量初始化参数化构造函数的对象数组
- 有什么方法可以将具有不同模板参数的模板类实例放入向量中?
- OpenCL 是否支持向量作为内核参数?
- 使用并行参数向量调用元素向量的成员函数
- 如何将子类作为函数的参数传递给期望基类,然后将该对象传递到指向这些抽象类对象的指针向量中?
- 将不同类型的模板参数包提取到双精度向量中会产生警告
- 使用参数的可变大小向量格式化字符串(例如,将参数向量传递给 std::snprintf)
- 使用参数向量调用函数
- 合并排序 c++ 1 参数 - 向量
- 快速排序函数C++ 1 个参数 - 向量
- RAII字符**用作exec参数向量
- C++模板,它调用带有参数向量的函数
- std::async - 参数向量已损坏
- 在C++中调用可变参数函数,参数向量