2012-11-15 81 views
-2

我正在嘗試編寫程序,儘管我已經完成了它,但我還需要更多。因此,用戶問,如果字符串包含*我想刪除第一個*和COUT輸入C++如何從字符串中刪除字符(輸入)

getline(cin,str); 
    int k=str.length(); 
    for(int i=0; i<=k; i++) 
     if(str[i]=='*') 
      string::iterator it; 
      it=str.begin()+i; 
      str.erase(it); 
      break; 
    cout<<str<<endl; 

我在做什麼錯給的輸入?

+1

嘗試,如果(STR [1] == '*')。另外,如果直到只有當聲明爲真時纔會執行的內容結束,請添加大括號。 – jt234

+0

使用['str.find()'](http://en.cppreference.com/w/cpp/string/basic_string/find)來定位'*'並且有'str.erase()'的版本。它接受一個避免迭代器計算的索引和長度。 – hmjd

+0

另外,爲什麼不使用find方法而不是循環每個字符?它應該更簡單。 – RonaldBarzell

回答

4

要非常小心,您需要使用括號{}來控制範圍,而不是製表符!

此外,使用=if是分配,而不是支票,你需要使用==

你迭代使用i但你刪除使用x

+0

你是對的,它不是我的x – xlapa

+0

現在用括號將你的代碼範圍改爲if(str [i] ='*')'if(str [i] == '*')'它應該在範圍內工作 – emartel

+0

我的意思是你應該在你的if和'}'的內容之前有一個前導'{' – emartel

2

您可以通過使用std::find刪除的*第一次出現簡化這個:

str.erase(std::find(str.begin(), str.end(), '*'));