-1

.txtコンテンツを.exeにリダイレクトしようとしています

program.exe <file.txt

とfile.txtの内容は

35345345345
34543534562
23435635432
35683045342
69849593458
95238942394
28934928341

ただし、配列の最初のインデックスはファイルパスであり、ファイルの内容は表示されません。

int main(int argc, char *args[])
   {
    for(int c = 0; c<argc; c++){
            cout << "Param " << c << ": " << args[c] << "\n";
    }
    system("PAUSE");
    return EXIT_SUCCESS;
}

必要な出力:

Param0: 35345345345
Param1: 34543534562
Param2: 23435635432
Param3: 35683045342
Param4: 69849593458
Param5: 95238942394
Param6: 28934928341
4

4 に答える 4

4

構文は、引数ではなく、(または必要に応じて)にmyapp < file.txt渡されます。stdincin

于 2013-03-08T23:48:59.053 に答える
1

argcあなたは何のために何のためにあるのか誤解しargvました。これらには、プログラムへのコマンドライン引数が含まれています。たとえば、次のコマンドを実行した場合:

program.exe something 123

が指すnullで終了する文字列は、、、、およびになりargvます。program.exesomething123

program.exeファイルの内容をusingにリダイレクトしようとしています< file.txt。これはコマンドライン引数ではありません。ファイルの内容をプログラムの標準入力にリダイレクトするだけです。これらのコンテンツを取得するには、から抽出する必要がありますstd::cin

于 2013-03-08T23:51:27.833 に答える
0

「ただし、配列の最初のインデックスはファイルパスであり、ファイルの内容は表示されません」と言う場合。argvとargcからの入力を読み取ろうとしているようです。アングルブラケットシェル演算子はそのようには機能しません。代わりに、stdin(cinおよびいくつかのC関数が読み取るもの)にそのファイルの内容が含まれます。したがって、上記の場合のファイルから読み取るには、cinを使用します。

代わりに、ファイルを引数リストに自動的に挿入したい場合は、Windowsシェルを使用することはできませんただし、を使用するオプションがある場合はbash、以下が機能します。

program.exe `cat file.txt`

backtick演算子は、に含まれるコマンドの結果に展開されるため、内容は引数としてprogram.exeに渡されます(ここでも、bashWindowsシェルではなくシェルの下にあります) 。

于 2013-03-08T23:48:29.213 に答える
0

このコードは、私が他のコードで期待していたことを実行します。助けてくれたみんなに感謝します。

#include <iostream>
#include <string>

using namespace std;

int main()
{
string line;
while (getline(cin, line))
    cout << "line: " << line << '\n';
}
于 2013-03-08T23:57:43.617 に答える