将cout格式的数据写入printf

时间:2012-02-21 19:45:24

标签: android c++ windows logging io

我正在为一个跨平台的应用程序做日志记录,而我正试图理解我应该怎么做,例如Android,其中C ++中的默认日志记录系统使用printf格式化的函数。但是我想使用'<<'操作员可以轻松记录,例如

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

现在如何将其转换为printf友好格式?有一个简单的方法吗?

编辑:mLogger是输出流。我要重载'&lt;&lt;&lt;运算符并尝试以某种方式从其输入构建一个正确格式化的字符串以用于printf。那更清楚吗?

2 个答案:

答案 0 :(得分:2)

您可以使用字符串流格式化消息:

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 :(得分:1)

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