Как добавить значение переменной внутри текстовой переменной в C ++ - PullRequest
0 голосов
/ 24 апреля 2019

В моем коде 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 отправит его на консоль и не вернет значение слова.

1 Ответ

3 голосов
/ 24 апреля 2019

В 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());
...