如何使用终端命令从C++程序打开多个图像
How can I open several images from a C++ program using terminal commands?
我需要从一个网站上打开几个图像,生成带有for循环的图像的url-所有的url看起来都一样,但都是最后一个数字。
system("open")适用于单个url,但我不知道如何在命令中传递引用图像编号的变量,因为它是一个字符串。
#include <iostream>
#include <stdlib.h>
using namespace std;
int main()
{
for (int i = 1; i <= 13; i++)
{
system("open http://www.site/images/image-[how do I pass i here??].jpg");
}
}
[编辑]我正在开发MacOS。
您应该动态构建传递给system
的C字符串。
例如:
for (int i=1; i<=13; i++) {
char cmdbuf[80];
snprintf(cmdbuf, sizeof(cmdbuf), "open http://www.site/images/image-%d.jpg", i);
int notok = system(cmdbuf);
if (notok) break;
}
上面的代码实际上是C代码(如果有适当的#include
-s,它将在C++中工作)。如果你想要真正的C++代码,你可以使用一些std::ostringstream来构建一些std::string(并在将其传递给system
之前使用其c_str
成员函数将其转换为C字符串)
阅读C和C++中的snprintf
。C和C++是不同的语言。
在C++中,std::system
提供了<cstdlib>
(您应该使用它来代替作为C标准头的<stdlib.h>
)。
顺便说一句,您可能对诸如lib洋葱之类的HTTP服务器库和诸如libcurl之类的HTTP客户端库感兴趣。您将更好地了解HTTP协议。
您的上述程序作为shell脚本编写得更好、更快。对于您的特定情况,它会更快(写入),更健壮(即使运行速度可能慢几毫秒)。请注意,open
不是一个标准的POSIX程序(在Linux上,您可以使用xdg-open
),并且可能不存在于Windows上(我根本不知道)。
还要注意,无论是C标准还是POSIX标准都不能保证程序的用户有一个屏幕。如果您在某台数据中心机器上运行程序,您可能会感到失望。
相关文章:
- 有关图像处理应用程序的硬件和软件安全性的建议
- 程序仅正确旋转方形图像
- Qt-png图像未显示在部署应用程序中
- 如何正确使用Qt QML图像提供程序
- 在图像上覆盖文本的程序会产生无休止的字符串错误
- 使用命名管道将图像从C++发送到 C# 应用程序
- 如何开发图像识别程序
- 这是我的程序,C++使用 OpenCv 库从数据集中读取图像序列,但它没有运行
- 如何将子窗口(MFC 应用程序)的工作区保存到图像
- 如何防止从浏览器查看图像,但允许在桌面应用程序上
- 如何使用我的C程序将PDF转换为图像格式(jpeg,png,..)
- 如何在 Unity Android 应用程序中的 OpenCV 中使用 ARCore 相机图像
- 具有SPI_SETDESKWALLPAPER功能的程序仅在尝试使用C++将其更改为图像时将桌面背景更改为黑色
- 如何使用终端命令从C++程序打开多个图像
- 使用C++程序中的拉斯皮斯蒂尔读取相机图像
- 在Visual C 控制台应用程序中显示图像
- 如何在窗口 MFC 应用程序中更改图像
- 将多个图像从QT应用程序拖到MS Word
- 打开不同的图像文件,并使用GDI 库在主应用程序窗口的背景上绘制它们
- 程序以转换图像和旋转