【问题标题】:Convert long to char* const将 long 转换为 char* const
【发布时间】:2011-07-23 18:28:39
【问题描述】:

在 C++ 中将long 转换为char* const 的正确方法是什么?

编辑:

long l = pthread_self();
ThirdPartyFunction("Thread_Id_"+l); //Need to do this


ThirdPartyFunction(char* const identifierString)
{}

【问题讨论】:

标签: c++


【解决方案1】:

编辑: 在 C++ 中,将整数转换为字符串的“正确”方法是使用字符串流。例如:

#include <sstream>

std::ostringstream oss;
oss << "Thread_Id_" << l;
ThirdPartyFunction(oss.str().c_str());

现在,这可能不是“最快”的方式(流有一些开销),但它简单、易读,更重要的是安全。


下面是旧答案

取决于您所说的“转换”。

要将long 的内容转换为指针:

char * const p = reinterpret_cast<char * const>(your_long);

long“看到”为chars 的数组:

char * const p = reinterpret_cast<char * const>(&your_long);

要将long 转换为string

std::ostringstream oss;
oss << your_long;
std::string str = oss.str();
// optionaly:
char * const p = str.c_str();

【讨论】:

    【解决方案2】:
    long l=0x7fff0000;   // or whatever
    char const *p = reinterpret_cast<char const *>(l);
    

    【讨论】:

    • 出现分段错误
    【解决方案3】:

    另一种可能的“纯”解决方案是使用 snprintf

    long number = 322323l;
    char buffer [128];
    int ret = snprintf(buffer, sizeof(buffer), "%ld", number);
    char * num_string = buffer; //String terminator is added by snprintf
    

    【讨论】:

      猜你喜欢
      • 2013-10-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多