将代码从一个命令行参数更新为两个
Updating code from one command line argument to two
我有执行以下操作的代码:
const char* filename = argc >= 2 ? argv[1] : "stuff.jpg";
它在照片中读取为命令行参数并显示它。
我现在想拍两张照片,我尝试了这段代码:
const char* filename = argc >= 3 ? argv[1] : "stuff.jpg", argv[2] : "tester.jpg";
但是我收到这样的错误:
error: expected initializer before ‘:’ token
有人知道出了什么问题吗?有没有一种更类似的方法来以编程方式完成此输入?
你在这里处理的是一个三元 if 运算符。看看这个页面。它基本上是一个内联 if 语句。
可以执行您正在寻找的操作的代码看起来有点像这样:
const char* filename1 = argc >= 2 ? argv[1] : "stuff.jpg";
const char* filename2 = argc >= 3 ? argv[2] : "tester.jpg";
这给你留下了两个文件名变量,分别存储提供的参数或默认值(分别为stuff.jpg
和tester.jpg
)。
为了以易于使用的格式获取所有参数,我这样做:
int main(int argc, char* argv[])
{
std::vector<std::string> args(&argv[1], &argv[argc]);
// args.size() is the number of arguments.
// In your case the number of files.
// So now you can just loop over the file names and display each one.
// Note The above is guranteed to be OK
// As argv[] will always have a minimum of 2 members.
// argv[0] is the command name thus argc is always >= 1
// argv[argc] is always a NULL terminator.
}
当您需要 4、5 张或更多照片时会发生什么?伪代码:
vector<char *> photos;
if(argc > 1)
{
for i to argc-1
photos.push_back(argv[i]) ;
}
相关文章:
- 如何在C++中从两个单独的for循环中添加两个数组
- 为什么两个不同的未命名名称空间可以共存于一个cpp文件中
- 当在同一名称空间中有两个具有相同签名的函数时,会发生什么
- 如何返回一个类的两个对象相加的结果
- 如何在C++中将一个无符号的 int 转换为两个无符号的短裤?
- 如何将两个不同矢量的同一位置的两个元素组合在一起
- 两个字符串在 c++ 中不相等
- 在两个类中共享相同的函数调用,并在不需要时避免空实例化
- 两个文件使用彼此的功能-如何解决
- 为什么Mat类的两个对象可以在不重载运算符+的情况下添加
- 如何确保在使用基于布尔值的两个方法之一调用方法时避免分支预测错误
- 停止cmake target_link_libraries将插件中静态库的两个对象文件链接到静态库本身
- 将fold表达式与std::一起用于两个元组
- 如何在C++中比较两个char数组
- 在 for 循环中更新两个变量时遇到问题C++
- Qt多线程:如何更新两个QLabel?
- 两个进程之间的共享映射内存在编辑时未更新
- 将代码从一个命令行参数更新为两个
- 如何比较两个向量中的两个值,然后在C++中更新向量值
- 同一超类的两个类之间的相互更新