建立argv和argc

时间:2012-04-06 23:25:36

标签: qt arguments main argv argc

我是一名学生程序员,使用Qt构建工作的GUI应用程序。此应用程序的主要目的是打开一些旧样式文件,允许更好的编辑,然后以新的格式和文件扩展名保存文件。最近我被要求允许从终端进行转换。虽然我知道argv和argc是什么以及它们代表什么,但我不确定如何实现他们想要的东西。例如,如何处理相对路径与绝对路径......也许如何从相对路径获得绝对路径;也许甚至都不需要。我的编程经验主要是使用guis,所以这对我来说有点新鲜。

用户希望从终端

运行以下内容
application -o /fileLocation /fileDestination template(to determine new format)

我开始使用for循环和if语句开始实现这一点,当我重新开始时我可能会采用worng方法来解决所有这些问题。如果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

感谢您阅读我的帖子并非常感谢您为帮助我克服这个问题所做的任何贡献。

1 个答案:

答案 0 :(得分:2)

if(argv[i] == "-c")

您无法比较C字符串。你可以比较字符,所以你可以做 if(argv[i][0] == '-' && argv[i][1] == 'c')

但是在Qt中你应该使用QApplication ::参数,参见Obtaining command line arguments in a Qt application