0

私は Qt を使用して仕事用の GUI アプリケーションを構築する学生プログラマーです。このアプリケーションの主な目的は、いくつかの古いスタイル ファイルを開き、より適切な編集を可能にしてから、新しい形式とファイル拡張子でファイルを保存することです。最近、この変換を端末から行うように依頼されました。私は argv と argc が何であるか、そしてそれらが何を表しているかを知っていますが、彼らが望むものを達成する方法がわかりません。たとえば、相対パスと絶対パスを処理する方法...おそらく相対パスから絶対パスを取得する方法。おそらくそのどれも必要ありません。私のプログラミング経験は主に gui でしたので、これは私にとって少し新しいことです。

ユーザーはターミナルから以下を実行したいと考えています

application -o /fileLocation /fileDestination template(to determine new format)

これを達成するために for ループと if ステートメントを使い始めました。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

私の投稿を読んでくれてありがとう。また、この問題を解決するためにあなたがしてくれた貢献に心から感謝します。

4

1 に答える 1

2

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

そのようなC文字列を比較することはできません。あなたはキャラクターを比較することができるので、あなたはすることができます
if(argv[i][0] == '-' && argv[i][1] == 'c')

ただし、Qtでは、QApplication::argumentsを使用する必要があります。Qtアプリケーションでのコマンドライン引数の取得を参照してください。

于 2012-04-07T04:49:24.183 に答える