我的代码执行以下操作:
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
有人知道什么是错的吗?是否有以编程方式进行此输入的模拟器方式?
答案 0 :(得分:2)
你在这里处理一个三元if-operator。看看this page。它基本上是一个内联if语句。
代码可以做你想要的东西,看起来有点像这样:
const char* filename1 = argc >= 2 ? argv[1] : "stuff.jpg";
const char* filename2 = argc >= 3 ? argv[2] : "tester.jpg";
这会留下两个文件名变量,分别存储提供的参数或默认值(stuff.jpg
和tester.jpg
)。
答案 1 :(得分:2)
要以易于使用的格式获取所有参数:
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.
}
答案 2 :(得分:1)
当您需要4张,5张或更多张照片时会发生什么? 伪代码:
vector<char *> photos;
if(argc > 1)
{
for i to argc-1
photos.push_back(argv[i]) ;
}