25

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

4

3 回答 3

37
auto myid = this_thread::get_id();
stringstream ss;
ss << myid;
string mystring = ss.str();
于 2013-10-08T18:12:12.223 回答
16

实际上std::thread::id可打印ostream(见this)。

所以你可以这样做:

#include <sstream>

std::ostringstream ss;

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

std::string idstr = ss.str();
于 2013-10-08T18:12:28.267 回答
8

“转换”std::thread::id为 a std::stringjust 会为您提供一些独特但无用的文本。或者,您可以将其“转换”为便于人类识别的小整数:

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];
}
于 2013-10-08T18:17:40.083 回答