将 long 类型转换为 char* const

4

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

编辑:

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


ThirdPartyFunction(char* const identifierString)
{}

2
你可能想阅读《Manor Farm的字符串格式化程序》(http://www.gotw.ca/publications/mill19.htm)。 - Fred Larson
3个回答

10

编辑: 在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();

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

1
long l=0x7fff0000;   // or whatever
char const *p = reinterpret_cast<char const *>(l);

它正在发生分段错误。 - Karthik K M

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接