printf 印出 std thread id 的數字或字串

之前介紹過如何取得 C++11 std thread id, 本篇要來介紹 printf 如何印出 std::thread::id,cout 本來就可以印 thread id,例如:cout<<std::this_thread::get_id()<<endl;,但是要用 printf 或 sprintf 就不得不把 thread id 轉成數字了,以下為紀錄我使用過的方式。

如果想看之前介紹的如何取得 C++11 std thread id,請看這篇

範例. 不介意真正的 thread id 數字,只是想標記或區別 thread 執行緒的話

使用 hash 的方式,如下所示:

1
std::hash<std::thread::id>{}(std::this_thread::get_id())

範例. 用 stringstream 來轉成字串

1
2
3
std::stringstream ss;
ss << std::this_thread::get_id();
printf("thread id = %s", ss.str().c_str());

範例. 用 stringstream 來轉成數字

1
2
3
std::stringstream ss;
ss << std::this_thread::get_id();
uint64_t id = std::stoull(ss.str());

參考
c++ - How to get integer thread id in c++11 - Stack Overflow
https://stackoverflow.com/questions/7432100/how-to-get-integer-thread-id-in-c11

相關文章
C/C++ 新手入門教學懶人包
std::thread 用法與範例