2013-10-08 24 views

回答

15
auto myid = this_thread.get_id(); 
stringstream ss; 
ss << myid; 
string mystring = ss.str(); 
4

其實std::thread::id打印使用ostream(見this)。

所以,你可以這樣做:

#include <sstream> 

std::ostringstream ss; 

ss << std::this_thread::get_id(); 

std::string idstr = ss.str(); 
4

「轉換」 std::thread::idstd::string只是給你一些獨特的,但另有無用的文字。或者,您可以將其「轉換」爲一個小整數,便於人類識別:

std::size_t index(const std::thread::id id) 
{ 
    static std::size_t nextindex = 0; 
    static std::mutex my_mutex; 
    static std::map<std::thread::id, st::size_t> ids; 
    std::lock_guard<std::mutex> lock(my_mutex); 
    if(ids.find(id) == ids.end()) 
    ids[id] = nextindex++; 
    return ids[id]; 
} 
相關問題