如何在c ++中将std :: thread :: id转换为字符串?

时间:2013-10-08 18:09:18

标签: c++ multithreading stdthread

如何在C ++中将std::thread::id类型转换为字符串?我试图将std::this_thread::get_id()生成的输出强制转换为字符串或字符数组。

3 个答案:

答案 0 :(得分:20)

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

答案 1 :(得分:4)

实际上std::thread::id使用ostream 可打印(请参阅this)。

所以你可以这样做:

#include <sstream>

std::ostringstream ss;

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

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

答案 2 :(得分:4)

&#34;转换&#34; std::thread::idstd::string只会为您提供一些独特但无用的文字。或者,您可以&#34;转换&#34;它是一个小整数,有助于人类轻松识别:

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];
}