當我有例如這個下一個字符串decleration:「string :: erase」如何在cpp中工作?
std::string myStr("miki");
然後我用下一個命令:
myStr.erase(0,1);
究竟happend幕後? 是否有任何「空終止符」將字符串中的所有字母移回一個位置? 使用string::erase
時在內存中發生了什麼?
當我有例如這個下一個字符串decleration:「string :: erase」如何在cpp中工作?
std::string myStr("miki");
然後我用下一個命令:
myStr.erase(0,1);
究竟happend幕後? 是否有任何「空終止符」將字符串中的所有字母移回一個位置? 使用string::erase
時在內存中發生了什麼?
在C++中沒有「一個真理」。有人編寫了您的實現的標準庫。還有其他的實現。
如果你真的想知道你使用,啓動調試器,將步入方法調用的實現在幕後發生了什麼。
儘管在技術上是正確的,但使用標準的命令,它幾乎可以確定'std :: string'被實現爲一個以null結尾的'char *'。 – NathanOliver
@NathanOliver我確信這是事實,但在我看來,按F11(在我的IDE中)並且100%確定地知道要比接受(非常有教育的)猜測要好。 – nvoigt
[this](http://en.cppreference.com/w/cpp/string/basic_string/erase)有幫助嗎? –
你可以谷歌的海灣合作委員會(libC++)或鏗鏘實現,並找出 –
@πάνταῥεῖ,沒有這可能根本沒有任何幫助。 – riwalk