std::string 和 const char* 之間有什么區別?考慮下面的例子
#include <iostream>
#include <string>
int main()
{
const char* myName1{ "Alex" };
std::cout << myName1 << '\n';
std::string myName2{ "Alex" };
std::cout << myName2 << '\n';
return 0;
}
他們是一樣的嗎?
uj5u.com熱心網友回復:
std::string將使您能夠使用其成員函式,最重要的是可以修改其內容。當程式到達其建構式時,初始資料可能1被復制到動態分配的記憶體位置。它還將存盤其大小。
const char*只是一個指向一個常量的指標值,該常量將被烘焙到二進制檔案中。沒有存盤大小資訊,所有對其進行操作的函式都必須依賴于'\0'末尾的值。
1小字串優化可能在這里起作用。
uj5u.com熱心網友回復:
一旦你想存盤一些字串,const char *不這樣做,你需要char *. 你必須為它分配記憶體char *來指向。而且您必須弄清楚要分配多少記憶體。然后,如果您想附加到該字串,則重新分配更多。并且您必須記住在指標超出范圍之前釋放該記憶體(例如,在某處拋出例外)。
嗯,std::string讓你從這一切中解脫出來。這就是最大的不同。
就像 C 陣列和std::vector...
但是在您的示例范圍內,實際差異很小。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/365028.html
