spdlog如何打印十六进制数
时间: 2024-05-06 10:16:06 浏览: 476
spdlog可以使用`{}`格式化字符串打印十六进制数。具体方法如下:
```c++
#include <spdlog/spdlog.h>
int main() {
uint8_t num = 0xAB;
spdlog::info("num in hex: {:#04x}", num);
return 0;
}
```
输出结果为:
```
num in hex: 0xab
```
其中,`{:#04x}`表示以十六进制形式输出,宽度为4位,不足则用0补齐。如果要输出更大的数,可以修改宽度参数。
相关问题
spdlog打印数组变量
你可以使用 `spdlog::debug` 或其他级别的日志函数,将数组变量转换为字符串后打印出来。例如,假设你要打印一个整数数组 `int_arr`,你可以这样做:
```cpp
#include <spdlog/spdlog.h>
int main()
{
int int_arr[] = {1, 2, 3, 4, 5};
std::stringstream ss;
ss << "[";
for (int i = 0; i < sizeof(int_arr)/sizeof(int); i++)
{
ss << int_arr[i];
if (i != sizeof(int_arr)/sizeof(int) - 1)
{
ss << ", ";
}
}
ss << "]";
spdlog::debug("int_arr: {}", ss.str());
return 0;
}
```
这里我们使用 `std::stringstream` 将数组变量转换为字符串,然后再通过 `spdlog::debug` 打印出来。注意在 `spdlog::debug` 的格式化字符串中使用 `{}` 占位符,这样我们就可以将数组字符串作为参数传递给日志函数。
spd log 打印线程号样式
`spdlog`是一个高效的C++日志库,它允许你在打印日志时添加丰富的信息,包括线程ID。如果你想让`spdlog`在输出的日志中包含当前线程的编号,你可以使用` spdlog::set_thread_id_logger`函数设置一个自定义的线程ID格式。
例如,如果你想要线程号以四位数字显示并附加到消息前,可以这样做:
```cpp
#include <spdlog/spdlog.h>
#include <thread>
// 创建一个日志器实例
std::string thread_prefix = "TID ";
auto logger = spdlog::stdout_logger_mt("my_logger");
logger->set_pattern("%v %t"); // 默认模式,仅包含时间戳
// 设置线程ID格式
logger->set_thread_id_logger([](size_t tid) {
return thread_prefix + std::to_string(tid).substr(0, 4); // 取四位数的线程ID
});
// 现在线程ID将按新格式添加到日志中
std::thread my_thread;
my_thread.join();
```
在这个例子中,`%t`占位符会替换为`set_thread_id_logger`中提供的线程ID格式。`set_pattern`函数用于定制日志的整体输出模式。
阅读全文