2016-12-07 30 views
-2

當我有例如這個下一個字符串decleration:「string :: erase」如何在cpp中工作?

std::string myStr("miki"); 

然後我用下一個命令:

myStr.erase(0,1); 

究竟happend幕後? 是否有任何「空終止符」將字符串中的所有字母移回一個位置? 使用string::erase時在內存中發生了什麼?

+0

[this](http://en.cppreference.com/w/cpp/string/basic_string/erase)有幫助嗎? –

+0

你可以谷歌的海灣合作委員會(libC++)或鏗鏘實現,並找出 –

+0

@πάνταῥεῖ,沒有這可能根本沒有任何幫助。 – riwalk

回答

1

在C++中沒有「一個真理」。有人編寫了您的實現的標準庫。還有其他的實現。

如果你真的想知道使用,啓動調試器,將步入方法調用的實現在幕後發生了什麼。

+1

儘管在技術上是正確的,但使用標準的命令,它幾乎可以確定'std :: string'被實現爲一個以null結尾的'char *'。 – NathanOliver

+0

@NathanOliver我確信這是事實,但在我看來,按F11(在我的IDE中)並且100%確定地知道要比接受(非常有教育的)猜測要好。 – nvoigt

相關問題