Запись форматированных данных в printf - PullRequest
0 голосов
/ 21 февраля 2012

Я веду журналирование для кроссплатформенного приложения и пытаюсь понять, как мне поступить, например, с Android, в котором система ведения журналов по умолчанию в C ++ использует функцию, отформатированную в printf.Однако я хочу использовать оператор «<<» для простого входа, например, </p>

std::string myName = Johan;
int myID = 1;
mLogger << "Hello my name is: " << myName << " and my ID is: " << myID;

Теперь, как можно было бы преобразовать это в формат для печати?Есть ли простой способ сделать это?

EDIT : mLogger - выходной поток.Я должен перегрузить оператор «<<» и попытаться каким-то образом построить правильно отформатированную строку из ее ввода, чтобы использовать ее для printf.Это понятнее? </p>

Ответы [ 2 ]

2 голосов
/ 22 февраля 2012

Вы можете использовать поток строк для форматирования сообщения:

std::ostringstream msg;
std::string myName = "Johan";
int myID = 1;

msg << "Hello my name is " << myName << " and my ID is: " << myId;

Передача строки в printf тогда довольно проста:

printf("%s", msg.str().c_str());
1 голос
/ 21 февраля 2012

printf("Hello my name is: %s and my ID is: %d", myName.c_str(), myId);

...