正在将cout格式的数据写入printf

Writing cout-formated data to printf

本文关键字:数据 printf 格式 cout      更新时间:2023-10-16

我正在为一个跨平台的应用程序进行日志记录,我正在努力了解当涉及到例如Android时应该如何做,在Android中,C++中的默认日志记录系统使用printf格式的函数。但是,我想使用'<lt;'操作员可以轻松登录,例如

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

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

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

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

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

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