我有一個數字,我需要轉換爲const char *
(我使用它們的API需要const char *
作爲其許多函數的輸入)。以下作品:轉換爲std :: string並在一行中獲取const char *
int num = 5;
std::string s = std::to_string(5);
const char * p = s.c_str();
由像那些how to convert from int to char*?答案建議,但它涉及到創建看似不必要的變量s
,所以我嘗試以下,但它不工作(p指向一個空字符串之後):
int num = 5;
const char * p = std::to_string(num).c_str();
有沒有一個乾淨的方式,我可以做到這一點?爲什麼第二個例子不工作?該行爲非常相似,會發生什麼,如果我做了這個明顯的錯誤:
const char * p;
{
std::string tempStr("hi");
p = tempStr.c_str();
// p points to "hi" string.
}
// now p points to "" string.
這讓我懷疑,這個問題std::to_string(num)
立即超出範圍或相似的,因爲它不是直接用來初始化任何東西。
爲什麼不直接使用'的std :: string',忘了'爲const char *'? (一個'std :: string'只是一個'char *'包裝在有用的代碼中去做一些你不需要的東西) – Galik
這個「看似不必要的」實例管理'p'指向的動態分配的內存。在第二個例子中,該內存立即釋放,留下'p'懸掛指針。在第三個例子中,只是更明確一點。 –
@Galik是的我很喜歡,但我使用的API需要一個const char *作爲我使用了很多功能的輸入。 – aquirdturtle