2016-03-30 27 views
-4
void Obenglobish::work() 
{ 
    for (int i = 0; i<word.length(); i++) 
    { 
     if (word[i] == 'a') 
     { 
      word.insert(i, "ob"); 
     } 

    } 
} 

我的程序運行正常,直到它達到這個說法,我不知道我在做什麼錯在這裏。爲什麼我的程序凍結在string :: insert()?

+4

它找到一個,在它前面插入'ob',再次找到a,插入......你有一個無限循環。 –

+1

@Revolver_Ocelot這是一個awnser –

回答

1

如果你的目的是與「OB」代替「A」的所有實例,然後考慮使用string::replace

如果你想要的所有實例之前插入「OB」,「一個」你將需要(在本例中2)插入文本的長度增加它來修改循環變量。

for (int i = 0; i < word.length(); i++) 
{ 
    if (word[i] == 'a') 
    { 
     word.insert(i, "ob"); 
     i += 2; 
    } 
} 
相關問題