我有std :: string指針,我喜歡將它的值複製到普通std :: string 我找不到快捷的方法來做到這一點。 我有這樣的:如何將std :: string指針轉換爲std :: string
int main()
{
std::string * pStr = new std::string("hello")
std::string strNew = pStr->??? // how to convert ?
return 0;
}
我有std :: string指針,我喜歡將它的值複製到普通std :: string 我找不到快捷的方法來做到這一點。 我有這樣的:如何將std :: string指針轉換爲std :: string
int main()
{
std::string * pStr = new std::string("hello")
std::string strNew = pStr->??? // how to convert ?
return 0;
}
兩種方式:
std::string strNew = pStr->c_str(); // Be careful of `\0` with in the string
或
std::string strNew = *pStr;
第二個的爲佳,因爲C語言風格的字符串可以不表示std :: string corr ectly。它首先結束一個字符串\0
並忽略尾隨。
取消引用:
std::string strNew = *pStr;
並明確它是一個構造函數,而不是一個assignemnt:'std :: string strNew(* pStr);' –
@VincenzoPii:相當,雖然對於現有字符串的賦值也是如此。 –
答案很明顯,並且已經給出了,但是它忽略了一個更大的問題:爲什麼首先有一個指向std :: string的指針?你會'不''新'一個'std :: string',並且關於使用指針的唯一原因是作爲一個「可能」返回值,對於執行某種查找的函數。 –