2012-07-20 46 views
-1

我在cocos2dx中使用C++字符串函數。我有以下字符串CorrectAns =「below」。在std :: string中替換函數在C++中給出問題

for(int i = 0; i<CorrectAns.size();i++) 
{ 
     CorrectAns.replace(i,i,"?"); 
} 

該函數應該返回我的字符串爲「?????」,但它只返回4個字符,即「????」。

當我寫這樣,

for(int i = 0; i<CorrectAns.size();i++) 
{ 
if(i == 0) 
    { 
     CorrectAns.replace(i,i,"?"); 
    } 
} 

它只是崩潰。 只有當我把它寫成「CorrectAns.replace(i,i + 1,」?「);」

爲什麼功能以這種方式工作?任何人都可以幫助我嗎?

回答

4
string& replace (size_t pos1, size_t n1, const string& str); 

對於版本的參數POS1和N1,該部分替換 開始於字符位置POS1和跨越供內 字符串N1個字符。

所以,你應該用

for(int i = 0; i<CorrectAns.size();i++) 
{ 
     CorrectAns.replace(i,1,"?"); 
} 

MB會更加有用的使用像

CorrectAns.assign(CorrectAns.size(), '?'); 
+1

Thnks的東西......這是我的一個愚蠢的錯誤! – 2012-07-20 05:36:54