【发布时间】:2011-03-12 04:51:56
【问题描述】:
在我的多线程程序中,我记录了进程 ID 和线程 ID。线程 ID 是使用 pthread_self() 函数生成的。当我以十六进制打印时,通常它有 12 个字符,其中前四个总是常见的,我不想记录它们。
在 C++ 中打印最后 8 个字符的最佳方法是什么,我尝试使用 boost::format 但不知道如何打印最后 8 个字符。
例如 这里打印十进制的进程ID和十六进制的线程ID。
std::cout << boost::format("%5d|%8X") %getpid() %pthread_self()
我已经使它适用于以下解决方案,但我不喜欢幻数 10000000000
std::cout << boost::format("%5d|%8X") %getpid() %(pthread_self()%10000000000)
注意:为简单起见,这里我使用了 std::cout。在我的应用程序中,我使用 boost::log,所以如果有办法使用 boost log,那是首选。
这里是一个例子:7f08很常见,在调试中没有任何价值。
14833|7f084b7fe700
14833|7f084bfff700
14833|7f0850dec700
14833|7f08515ed700
14833|7f0851dee700
14833|7f08525ef700
14833|7f0852df0700
14833|7f08535f1700
【问题讨论】:
标签: c++ multithreading