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

Posted

技术标签:

【中文标题】如何在 C++ 中将 std::thread::id 转换为字符串?【英文标题】:How to convert std::thread::id to string in c++? 【发布时间】:2013-10-08 18:09:18 【问题描述】:

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

【问题讨论】:

“转换”是什么意思?你想对“转换后的”std::thread::id 做什么? 【参考方案1】:
auto myid = this_thread::get_id();
stringstream ss;
ss << myid;
string mystring = ss.str();

【讨论】:

【参考方案2】:

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

所以你可以这样做:

#include <sstream>

std::ostringstream ss;

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

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

【讨论】:

【参考方案3】:

“转换”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];

【讨论】:

不是一个严格的问题答案,但仍然是一个非常有用的答案!

以上是关于如何在 C++ 中将 std::thread::id 转换为字符串?的主要内容,如果未能解决你的问题,请参考以下文章

如何在浏览器中将 C++ 编译为 JavaScript?

如何在 c++ 中将枚举与函数一起使用?

如何在 C++ 中将大数字符串转换为整数?

如何在 Cython 中将 Python 对象转换为 C++ 类型

如何在 C++ 中将指针转换/转换为引用

如何在 C++ 中将毫秒时间转换为 FILETIME