2014-05-23 149 views
17

如何從std :: string中刪除第一個和最後一個字符,我已經在執行以下代碼。刪除第一個和最後一個字符C++

但這個代碼僅刪除最後一個字符

m_VirtualHostName = m_VirtualHostName.erase(m_VirtualHostName.size() - 1) 

如何同時刪除第一個字符?

+8

如果字符串爲空,那麼代碼將會繁榮。 – PaulMcKenzie

+1

什麼類型是m_VirtualHostName? – LVBen

+0

@PaulMcKenzie所以我必須先驗證,如果VirtualHostName不是空的。 –

回答

34

嗯,你可以erase()的第一個字符太(注意:erase()修改字符串):

m_VirtualHostName.erase(0, 1); 
m_VirtualHostName.erase(m_VirtualHostName.size() - 1); 

但在這種情況下,一個簡單的方法是採取一個字符串:

m_VirtualHostName = m_VirtualHostName.substr(1, m_VirtualHostName.size() - 2); 

要小心驗證字符串實際上至少有兩個字符在其中...

+0

它會崩潰,如果我只有2個字符? –

+0

@普特拉:是的。 C++並不特別友好;-) **編輯**:不,我誤解您的評論。如果您的*少於兩個字符(0或1),它會崩潰。 – Cameron

+1

@PutraFajarHasanuddin它會在你沒有或字符串中有1個字符的時候。它的記錄[這裏](http://en.cppreference.com/w/cpp/string/basic_string/erase)。只有當['size()'](http://en.cppreference.com/w/cpp/string/basic_string/size)返回至少1時執行第二行。 – Appleshell

相關問題