我是一名学生程序员,使用Qt为工作构建GUI应用程序。此应用程序的主要目的是打开一些旧样式的文件,以便更好地进行编辑,然后以新的格式和文件扩展名保存文件。最近,我被要求允许从一个终端进行这种转换。虽然我知道argv和argc是什么以及它们代表什么,但我不确定如何实现它们想要的。例如,如何处理相对路径与绝对路径。。。也许如何从相对中获得绝对;也许这些都不需要。我的编程经验主要是使用gui,所以这对我来说有点新鲜
用户希望从终端运行以下内容
application -o /fileLocation /fileDestination template(to determine new format)
我开始使用for循环和if语句来实现这一点,当时我重新意识到我可能会对这一切采取worn方法。如果QT有这样的东西,我也会非常感兴趣!以下是我开始想到的:
int main(int argc, char *argv[])
{
if(argc > 1)
{
for(int i = 0; i < argc; i++)
{
if(argv[i] == "-c")
{
QString fileName = QString::fromStdString(argv[i+1]);
QString fileDestination = QString::fromStdString(argv[i+2]);
QString templateName = QString::fromStdString(argv[i+3]);
QFile fileToConvert(fileName);
if(fileToConvert.open(QFile::ReadOnly))
{
//do stuff
感谢你阅读我的帖子,并非常感谢你为帮助我克服这个问题所做的任何贡献。
if(argv[i] == "-c")
你不能那样比较C字符串。您可以比较字符,因此可以执行if(argv[i][0] == '-' && argv[i][1] == 'c')
但在Qt中,您应该使用QApplication::arguments请参阅在Qt应用程序中获取命令行参数