2015-07-19 20 views
2

我是C++新手。我知道有一個std::remove方法來刪除字符串中的字符,但是有沒有一種remove_at方法可以讓我刪除字符串中某個索引處的字符?例如,C++中有字符串的removeAt函數嗎?

string s = "aBcDeF"; 
s = s.remove_at(4).remove_at(2); 

會導致

"aBDF" 

是否有標準庫函數來做到這一點?

+0

的std :: basic_string的 ::抹去 – BlamKiwi

+1

我猜閱讀文檔太難了。 –

回答

6

該方法被稱爲erase。下面是一個示範程序

#include <iostream> 
#include <string> 

int main() 
{ 
    std::string s = "aBcDeF"; 
    s.erase(4, 1).erase(2, 1); 

    std::cout << s << std::endl; 
} 

程序輸出是

aBDF 

考慮到在其中方法被調用的順序。當然,你可以將這一個呼叫分成兩個分開的呼叫。

例如

s.erase(2, 1); 
s.erase(3, 1); 

如果neded創建一個新的字符串,你可以簡單地初始化這一個新的字符串。例如

std::string t = s; 
t.erase(2, 1); 
t.erase(3, 1); 
+0

我認爲這很好,但它會從原始字符串中刪除字符,而不是返回一個新字符。對不明確的關於不變性的含義很抱歉;我會更新我的問題來反映。 –

+1

如何自己創建這個新的修改過的字符串?沒有什麼困難 – LBes

+0

@JamesKo'string s2 = s;',並修改s2? – deviantfan