【问题标题】:Python and C++ integration. Python prints string as multiple linesPython 和 C++ 集成。 Python将字符串打印为多行
【发布时间】:2010-08-17 20:52:12
【问题描述】:

我正在尝试用 python 编写一个程序以在 C++ 中运行一个程序。它工作不正常,所以我尽可能制作了最基本的版本。 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,

我一直看到的问题是空格似乎将字符串分开,即使它是字符串文字。我不确定在这里做什么。有什么建议吗?

【问题讨论】:

  • 你为什么不用subprocess.Popen
  • C++ 程序是否正在刷新标准输出?
  • 当你自己调用C++程序时,它会返回想要的输出吗?即,./PyTest Hello, world! 返回 Hello, world!?
  • 详细说明 S Lott 的评论:popen2:“自 2.6 版起已弃用:此模块已过时。使用子流程模块。特别检查用子流程模块替换旧功能部分。” docs.python.org/library/subprocess.html#subprocess-replacements
  • 说来话长,但基本上我只是在使用 python 2.4。不,我刚刚意识到我的 C++ 代码没有达到我的预期。我忘记了 cin 将空格作为多个字符串输入处理。所以它一次只接收一个。傲慢是我的失败!

标签: python string whitespace popen stdio


【解决方案1】:

在 C++ 中,std::cin >> mystring 使用空格作为分隔符。如果您想一次吞下整行,请改用std::getline

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-07-01
    • 2010-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多