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

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

【问题讨论】:

  • “转换”是什么意思?你想对“转换后的”std::thread::id 做什么?

标签: c++ multithreading stdthread


【解决方案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];
      }
      

      【讨论】:

      • 不是一个严格的问题答案,但仍然是一个非常有用的答案!
      猜你喜欢
      • 2022-01-11
      • 1970-01-01
      • 1970-01-01
      • 2019-03-31
      • 2016-04-23
      • 2022-10-05
      • 2023-03-24
      • 2011-06-13
      相关资源
      最近更新 更多