2016-11-26 64 views
0
const char* s = std::string("text").c_str(); 
std::cout << s << std::endl; //This will print nothing because the data 
          //isn't available any longer 

std::string::c_str()返回指向其存儲數據的指針。 事實上,std::string("text")只是我可以使用它的時間(例如,當我使用它初始化另一個實例時),因此最後調用析構函數,刪除數據使得s什麼也不指向。是否有可能用像string.c_str()這樣的右值初始化const char *?

現在我的問題是,如果有一種方法可以將數據移動到某處,而不會被析構函數刪除,所以const char*可以指向它。或者,如果他們使用像共享智能指針那樣的知道是否有其他東西指向std::string的數據,這樣它就不會被刪除。

將數據複製到某處並指出這不是我正在尋找的。

回答

1

無法使字符串在內部使用引用計數指針。如果您希望使用指向其數據的指針,則必須確保該字符串能夠存活。唯一的選擇是將數據複製/移出到另一個字符串對象中。

相關問題