将long转换为char*const

dev*_*ull 3 c++

什么是转换正确的方式longchar* const在C++?

编辑:

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


ThirdPartyFunction(char* const identifierString)
{}
Run Code Online (Sandbox Code Playgroud)

Eti*_*tel 10

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

#include <sstream>

std::ostringstream oss;
oss << "Thread_Id_" << l;
ThirdPartyFunction(oss.str().c_str());
Run Code Online (Sandbox Code Playgroud)

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


以下老答案

取决于你的意思"转换".

要将long内容转换为指针:

char * const p = reinterpret_cast<char * const>(your_long);
Run Code Online (Sandbox Code Playgroud)

要"看到" long作为chars 的数组:

char * const p = reinterpret_cast<char * const>(&your_long);
Run Code Online (Sandbox Code Playgroud)

要转换longstring:

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


bon*_*nyz 6

另一种可能的“纯”解决方案是使用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
Run Code Online (Sandbox Code Playgroud)