在我的C ++代码中,我正在使用python执行以下命令:
std::string word = "Something";
std::cout << word; //will execute using C++
PyRun_SimpleString("import sys"); // will execute using Python
问题是如何将word
传递给Python?
我想要这样的东西:PyRun_SimpleString("Hello %" %word);
在Python中,您可以执行:"Hello {}".format(word)
和结果"Hello Something"
我发现了以下内容:sprintf(str, "hello %s", word);
但是问题是printf
或sprintf
会将其发送到控制台,并且不会返回word的值。
答案 0 :(得分:3)
在C ++中,您使用+
运算符来串联std::string
对象。
PyRun_SimpleString()
以const char*
作为输入。 std::string
具有c_str()
方法,用于为字符串获取const char*
。
因此,您可以这样做:
std::string s = "Hello " + word;
PyRun_SimpleString(s.c_str());
或者简单地说:
PyRun_SimpleString(("Hello " + word).c_str());
或者,您可以使用std::ostringstream
来构建格式化的字符串:
std::ostringstream oss;
oss << "Hello " << word;
PyRun_SimpleString(oss.str().c_str());