将long转换为char * const

时间:2011-03-27 04:52:37

标签: c++

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

编辑:

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


ThirdPartyFunction(char* const identifierString)
{}

3 个答案:

答案 0 :(得分:8)

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

#include <sstream>

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

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


OLD ANSWER BELWAN

取决于“转换”的含义。

long的内容转换为指针:

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

要将long视为char s:

的数组
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();

答案 1 :(得分:3)

另一种可能性&#34;纯粹&#34;解决方案是使用 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

答案 2 :(得分:1)

long l=0x7fff0000;   // or whatever
char const *p = reinterpret_cast<char const *>(l);
相关问题