2010-08-17 122 views
2

我正在嘗試在python中編寫程序以在C++中運行程序。它不是正確的,所以我做了我所能做到的最基本的版本。 C++程序僅從stdin中獲取一個字符串,然後將其打印出來。 Python的代碼編寫如下:Python和C++集成。 Python將字符串打印爲多行

import popen2, string, StringIO 

fin, fout = popen2.popen2("PyTest") 
msg = ur"Hello, world!" 
print msg 
fout.write(msg) 
print fin.readline() 

輸出,但是看起來是這樣的:

Hello, world! 
Hello, 

我一直看到的問題是,空間似乎掰開字符串,即使它是一個字符串文字。我不確定在這裏做什麼。有什麼建議麼?

+4

你爲什麼不使用'subprocess.Popen'? – 2010-08-17 20:56:29

+1

C++程序是否刷新stdout? – unutbu 2010-08-17 20:59:13

+1

當你自己調用C++程序時,它是否返回所需的輸出?即,'./PyTest Hello,world!'返回'Hello,world!'? – Andrew 2010-08-17 21:06:25

回答

2

在C++中,std::cin >> mystring使用空格作爲分隔符。如果您想要一次吞噬整條線,請使用std::getline