如何将输入发送到c++;通过python

如何将输入发送到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

我使用以下代码将输入传递给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(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。