如何在C ++中将long
转换为char * const
的正确方法是什么?
编辑:
long l = pthread_self();
ThirdPartyFunction("Thread_Id_"+l); //Need to do this
ThirdPartyFunction(char* const identifierString)
{}
如何在C ++中将long
转换为char * const
的正确方法是什么?
编辑:
long l = pthread_self();
ThirdPartyFunction("Thread_Id_"+l); //Need to do this
ThirdPartyFunction(char* const identifierString)
{}
编辑: 在C++中将整数转换为字符串的“正确”方法是使用stringstream。例如:
#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
类型的值视为一个char
数组来"查看":
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();
long number = 322323l;
char buffer [128];
int ret = snprintf(buffer, sizeof(buffer), "%ld", number);
char * num_string = buffer; //String terminator is added by snprintf
long l=0x7fff0000; // or whatever
char const *p = reinterpret_cast<char const *>(l);