_std::thread::id
_をC++で文字列にタイプキャストする方法は? std::this_thread::get_id()
によって生成された出力を文字列またはchar配列にタイプキャストしようとしています。
auto myid = this_thread.get_id();
stringstream ss;
ss << myid;
string mystring = ss.str();
実際にはstd::thread::id
isprintableusing ostream
( this を参照)。
だからあなたはこれを行うことができます:
#include <sstream>
std::ostringstream ss;
ss << std::this_thread::get_id();
std::string idstr = ss.str();
「変換」std::thread::id
からstd::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];
}