【发布时间】:2013-10-08 18:09:18
【问题描述】:
如何在 C++ 中将std::thread::id 类型转换为字符串?我正在尝试将std::this_thread::get_id() 生成的输出类型转换为字符串或字符数组。
【问题讨论】:
-
“转换”是什么意思?你想对“转换后的”
std::thread::id做什么?
标签: c++ multithreading stdthread
如何在 C++ 中将std::thread::id 类型转换为字符串?我正在尝试将std::this_thread::get_id() 生成的输出类型转换为字符串或字符数组。
【问题讨论】:
std::thread::id 做什么?
标签: c++ multithreading stdthread
auto myid = this_thread::get_id();
stringstream ss;
ss << myid;
string mystring = ss.str();
【讨论】:
实际上std::thread::id 是可打印 使用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];
}
【讨论】: