如何将输入发送到c++;通过python
我使用以下代码将输入传递给cpp程序,该程序读取输入并打印它如何将输入发送到c++;通过python,python,c++,Python,C++,我使用以下代码将输入传递给cpp程序,该程序读取输入并打印它 from subprocess import Popen, PIPE p = Popen(['a.exe'], shell=True, stdout=PIPE, stdin=PIPE) for ii in range(10): value = str(ii) + '\n' value = bytes(value, 'UTF-8') # Needed in Python 3. p.stdin.write(va
from subprocess import Popen, PIPE
p = Popen(['a.exe'], shell=True, stdout=PIPE, stdin=PIPE)
for ii in range(10):
value = str(ii) + '\n'
value = bytes(value, 'UTF-8') # Needed in Python 3.
p.stdin.write(value)
#p.stdin.flush()
result = p.stdout.readline().strip()
print(result)
下面是python的输出
b''
b''
b''
b''
b''
b''
b''
b''
b''
b''
编辑:
以下是cpp文件的代码
#include<iostream>
using namespace std;
int main()
{
int a[10];
for(int i=0;i<10;i++)
{
cin>>a[i];
cout<<a[i];
std::cout.flush();
}
return 0;
}
#包括
使用名称空间std;
int main()
{
INTA[10];
对于(int i=0;i>a[i];
我在Linux上试过代码,但遇到了两个问题
- 在Python中,我必须使用
a.exe的完整路径来运行它
- 在CPP中,我必须添加
,您的问题是什么?什么是a.exe
?可能它返回空字符串。输出不正确。您期望的输出是什么?在windows上,即使是行尾输出,它仍然会锁定。@Jean Françoisfare尝试使用p.stdin.flush()好的工作。我尝试过,但没有C++上的换行。之后,我尝试了新行,但是没有STDIN刷新:你不应该刷新STDIN,这是真的,但是在我们的例子中,<>代码> STDIN < /Cord>是Python端的输出文件。不要使用<代码> \n < /> > <代码> STD::CUT。