我怎样做一个C++;通过Python subprocess.call()传入的程序读取参数? 基本上我正在制作Python程序,其中的一部分需要运行C++执行文件,我用ex/e调用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; FILE*input=popen(“pythonw.exe”、“r”); cout

我怎样做一个C++;通过Python subprocess.call()传入的程序读取参数? 基本上我正在制作Python程序,其中的一部分需要运行C++执行文件,我用ex/e调用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; FILE*input=popen(“pythonw.exe”、“r”); cout,c++,python,stdin,piping,C++,Python,Stdin,Piping,它们作为参数传递给main函数 main(int argc, char *argv[]) argc是argv的长度。是的 main(int argc, char *argv[]) { cout<<argv[1]; return 0; } main(int-argc,char*argv[]) { cout如果您只想传入几个参数,一个简单的选择是在命令行中读取参数,正如另一个答案中所建议的那样 对于更重要的输入/输出,如果您自然希望使用cout或cin,更好的选择是使用subpr

它们作为参数传递给
main
函数

main(int argc, char *argv[])
argc
argv
的长度。是的

main(int argc, char *argv[])
{
 cout<<argv[1];
 return 0;
}
main(int-argc,char*argv[])
{

cout如果您只想传入几个参数,一个简单的选择是在命令行中读取参数,正如另一个答案中所建议的那样

对于更重要的输入/输出,如果您自然希望使用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结果)被传递到STDUT列表中,标准错误传递到STDRR.<


如果您需要更多的交互通信,还可以访问proc.stdout和proc.stdin,就像它们是python中的文件句柄一样(例如proc.stdin.write(“hi\n”)

好的,我试过了,它告诉了我exe的地址。“hi”是什么意思从访问的python命令传递,或者我需要其他python命令。ps。在尝试代码之前,我删除了文件*input=popen(“pythonw.exe”,“r”),是否应该保留它?谢谢,JamieMy搞错了。argv[0]是程序名,argv[1]是第一个参数。你不需要任何文件变量,因为你的程序所获得的一切都在ARVV中。所以C++将向Python发送一个消息,给它下一个争论,然后等待CIN > A;或者SimMiLar?