1

基本的に私はPythonプログラムを作成しており、その一部はC ++実行可能ファイルを実行する必要があり、次のコマンドでexeを呼び出しています。

subprocess.call(["C:\\Users\\User\\Documents\\Programming\\Python\\Utilities\\XMLremapper\\TranslatorSource\\FileFixer.exe", "hi"])

しかし、C ++プログラムに入力を読み取らせるにはどうすればよいですか?私は試した:

FILE * input = popen("pythonw.exe", "r");
cout<< input.getline() << endl << endl;

しかし、それは出力するだけ0x22ff1cで、間違いなく「こんにちは」ではありません。入力をC++プログラムにパイプするために必要なコードは何ですか?

4

2 に答える 2

3

それらはパラメータとしてmain関数に渡されます。

main(int argc, char *argv[])

argcの長さですargv。だからそれは

main(int argc, char *argv[])
{
 cout<<argv[1];
 return 0;
}
于 2012-05-13T16:30:33.377 に答える
0

いくつかの引数を渡したいだけの場合は、別の回答で提案されているように、コマンドラインで引数を読み取るのが簡単なオプションです。

自然にcoutまたはcinを使用したい、より実質的な入出力の場合は、subprocess.Popenを使用することをお勧めします。その後、Pythonのファイルハンドルであるかのように、他のプロセスに書き込みおよび読み取りを行うことができます。例えば:

proc = subprocess.Popen(["FileFixer.exe"], 
            stdin=subprocess.PIPE, 
            stdout=subprocess.PIPE, 
            stderr=subprocess.PIPE)
stdout, stderr = proc.communicate("hi\n") 

これは、Pythonにプロセスを実行するように指示し、'hi'を渡してから、標準入力としてキャリッジリターンを渡します。これは、C++プログラムでcinによって読み取ることができます。次に、標準出力(C ++でのcoutの結果)がstdoutリストに渡され、標準エラーがstderrに渡されます。

よりインタラクティブな通信が必要な場合は、Pythonのファイルハンドルであるかのようにproc.stdoutとproc.stdinにアクセスすることもできます(例:proc.stdin.write( "hi \ n")

于 2012-05-14T00:11:54.553 に答える