2011-10-31 71 views
-2

可能重複:
How to find and replace string?替換字符串函數C++

我怎樣才能得到這樣的功能:

string gg="13332"; 
gg.replace("333","");//gg="12" 

? 我在標準庫上找不到任何東西。 編輯:我的功能:

 bool isDalshe=false; 
     do{ 
      isDalshe=false; 
     for(int i=0;i<10;i++){ 
      for(int j=3;j<9;j++){ 
       found=sk.find(mas[i][j].ch); 
       if(found!= std::string::npos){ 
       glob_c+=mas[i][j].i; 
       cout<<"Found: "<<int(found)<<endl; 
//In this place I need to replace "mas[i][j].ch" with "" in sk 
       isDalshe=true; 
       } 
      }} 
     } 
     while(isDalshe); 

回答

2

所有的形式std::string取位置更換,所以你必須找到現有的字符串,並用新的字符串替換爲兩個單獨的步驟,如下所示:

while ((pos=gg.find("333")) != std::string::npos) 
    gg.replace(pos, 3, ""); 

另一種選擇是將您的字符串視爲集合,並使用其上的std::replace。然而,這是真的打算在元素替換元素上工作,所以對於你的任務來說,它不會工作得很好。如果你真的想從字符串中刪除所有的a,你可以使用std::remove,但是如果(例如)你想把「133323」變成「123」(它將刪除全部3 s,無法告訴它你只想刪除連續三個'3'的字符串

+0

Thnaks!這正是我想要的。 – SevenDays

+0

我認爲爲人們提供現成的解決方案,特別是那些參加比賽和競賽的人,是一個非常糟糕的主意。當他們長大後,我們必須與他們合作,並且我希望他們在來到這裏之前學習如何學習,並用愚蠢的錯誤破壞項目,因爲他們懶得去查找。 – littleadv

+0

對於第一個我不是任何體育編程競賽的成員,第二個我沒有在互聯網上發現任何關於這個問題的任何信息,因爲我不知道需要替換的字符串的長度。 – SevenDays

2

std::stringreplace方法,這是接近你在找什麼。

這應該這樣做,我想:

std::string gg="13332"; 
gg.replace(1, 3, "");//gg="12" 

不過還好,使用升壓代替:Here。 Boos可以在一次調用中進行查找和替換,包括多次替換,這與std::string方法必須手動完成。

+0

這假定你知道你想要替換的部分的起始和結束位置 –

+0

@Seth,' std :: replace是你的意思嗎?是的,這就是爲什麼我建議Boost,也是爲了匹配和搜索你的。 – littleadv

+0

這是編程比賽,我不能使用Boost。 – SevenDays