2012-06-04 92 views
1

我想text=s-o-m-e=text喜歡的replaceAll替換字符(字符串,開始,結束, '_', ' - ')

替換字符串text=s_o_m_e=text我有一個起始和結束索引:

std::string str("text=s_o_m_e=text"); 

std::string::size_type start = str.find("text="), end; 

if (start != std::string::npos) { 
    end = str.find("=", start); 

    if (end != std::string::npos) { 
     //... 
    } 
} 

所以,我正在尋找這樣的功能:

replaceAll(string, start, end, '_', '-'); 

UP:

謝謝,Blastfurnace

+1

[此問題]的完全重複(http://stackoverflow.com/questions/2896600/how-to-replace-all-occurrences-of-a-character-in-string)。 –

回答

10

那裏有一個<algorithm>功能。

std::replace(str.begin(), str.end(), '_', '-'); 
+0

更多thx!所以,我的解決方案:'std :: replace(str.begin()+ start,str.end()+ end,'_',' - ');' – Duglas

+4

@Duglas:你不想引用過去的字符串的結尾。因爲你正在使用偏移量,所以我想你需要'std :: replace(str.begin()+ start,str.begin()+ end,'_',' - ');' – Blastfurnace

+0

使用std :: replace,old_string和new_string必須具有相同的長度。即std :: replace(my_str.begin(),my_str.end(),「舊字符串」,「不能碰這個」);在模板參數推理中失敗,即「模板參數推導/替換失敗;注意:參數'const_Tp'('char [11]'和'char [17]')的推導衝突類型」 – bitek

5

使用std::replaceHere是更多細節。

+1

+1,很好的參考。 – Blastfurnace

+0

-1,不好的答案:展示如何使用它的小片段會使它好多了。 –

+0

+1,很好的答案:需要學習使用文檔。 –

相關問題