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



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

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

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

所以你可以这样做:

#include <sstream>
std::ostringstream ss;
ss << std::this_thread::get_id();
std::string idstr = ss.str();

您可以将其"转换"为一个小整数,以便于人类识别:

std::size_t index(const std::thread::id id)
{
    static std::size_t nextindex = 0;
    static std::mutex my_mutex;
    static std::unordered_map<std::thread::id, std::size_t> ids;
    std::lock_guard<std::mutex> lock(my_mutex);
    auto iter = ids.find(id);
    if(iter == ids.end())
        return ids[id] = nextindex++;
    return iter->second
}

最新更新