【问题标题】:How to convert uint64_t to const char * in C++?如何在 C++ 中将 uint64_t 转换为 const char *?
【发布时间】:2014-07-19 15:24:39
【问题描述】:

我有一种方法可以接受const char *,如下所示 -

bool get_data(const char* userid) const;

下面是我的 for 循环,我需要通过传递 const char * 来调用 get_data 方法。目前下面的 for 循环使用 uint64_t。我需要将此uint64_t 转换为const char *,然后传递给get_data 方法。

for (TmpIdSet::iterator it = userids.begin(); it != userids.end(); ++it) {
    // .. some code
    // convert it to const char *
    mpl_files.get_data(*it)
}

这里TmpIdSettypedef std::set<uint64_t> TmpIdSet;

所以我的问题是我应该如何将上述代码中的uint64_t 转换为const char *

【问题讨论】:

  • “将数字转换为指针”是什么意思?如何将小猫转化为快乐的想法?
  • 你试过ltoa()吗?
  • 您真的希望将 64 位整数转换为字符串然后传递,还是只是想更改类型(这可能是未定义的行为)?
  • @JerryJeremiah 我希望将 64 位整数转换为字符串然后传递。实际上 C++ 不是我的第一语言,所以对预定义函数不太了解。我做了一些搜索,也找不到解决方案。
  • 一个 UUID 是 128 位的,你怎么把它装进uint64_t

标签: c++ char-pointer


【解决方案1】:

一种方法是首先使用std::to_string 将其转换为std::string,然后使用std::string::c_str() 成员函数访问原始数据:

#include <string>

....

uint64_t integer = 42;
std::string str = std::to_string(integer);
mpl_files.get_data(str.c_str());

【讨论】:

    【解决方案2】:
     mpl_files.get_data( std::to_string( *it ).c_str() )
    

    包括&lt;string&gt; 标头。对于 g++,请指定 -std=c++11

    【讨论】:

      【解决方案3】:

      您可以简单地转换为 const char *:

      uint64_t integer;
      const char * newpointer = (const char *)integer;
      

      【讨论】:

        猜你喜欢
        • 2014-10-22
        • 2019-11-11
        • 2020-08-04
        • 2015-04-02
        • 1970-01-01
        • 2013-12-31
        • 2012-01-16
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多