對不起,任何可能重複的問題。我一直在谷歌搜索我的編譯器錯誤的解決方案,現在一個星期,嘗試了不同的解決方法,從這裏的各種答案,但我不斷收到一些錯誤。如何正確地從字符數組中刪除字符(有或沒有轉換爲字符串)?
目前我正在學習C++,試圖建立一個程序,它基本的東西,如元音/輔音數量,信去除等等,直到我到了自定義信函去除一部分,一切工作正常。基本上,使用字符函數(根據我的知識)幾乎不可能做到這一點,而轉換爲字符串似乎會產生其他類型的錯誤。
下面是代碼片段,我不斷收到錯誤:正如你所看到的,原來的'是
int main()
{
char s[1000], phrasal[10], service[50], key1[] = "1", key2[] = "2", key3[] = "3", key4[] = "4", key5[] = "5", key6[] = "6", key0[] = "0", *p, letterToRemove;
int vowel=0, vowel2=0, consonant=0, consonant2=0, b, i, j, k, phrase=0, minusOne, letter, idxToDel;
void pop_back();
char *s_bin;
:
if (strcmp (service, key4) ==0)
{
string str(s);
cout<<endl<<"Please insert the letter you would like removed from your "<<phrasal<<":"<<endl;
cin>>letterToRemove;
s.erase(remove(s.begin(), s.end(),letterToRemove), s.end());
cout<<endl<<s<< "\n"<<endl;
}
,並在這裏被初始化變量我使用一個char數組。在第一個代碼示例我曾嘗試將其轉換成一個字符串數組(字符串str(S)),但是這會導致以下編譯錯誤:在的請求構件「擦除」:
- 錯誤',這是非班級類型'char [1000]'
- 錯誤:請求成員'開始'的's',它是非班級類型'char [1000]'
- 錯誤:請求's'中的成員'end',它是非類類型'char [1000]'
- 錯誤:請求成員'結束'在's'中,它是非類類型'char [1000 ]'
其他解決方法我試過是這樣的:
if(strcmp(service, key4)==0)
{std::string s(s);
cout<<endl<<"Please insert the letter you would like removed from your "<<phrasal<<":"<<endl;
cin>>letterToRemove;
s.erase(remove(s.begin(), s.end(),letterToRemove), s.end());
cout<<endl<<s<< "\n"<<endl;
}
現在,這裏的有趣的部分,我沒有得到任何錯誤,任何爲這一個,但只要調試崩潰,因爲我選擇定製信去除功能。下面是這樣說的:
任何幫助將不勝感激,停留在這一塊,現在一個星期!
P.S.如果我或主持人在回答問題後刪除了這個問題,可以嗎?我很確定我不是第一個問這個問題的人,但是,正如之前提到的,即使在回答類似問題的答案後,我仍然會收到這些錯誤。
你用C或C++編碼嗎? 's'是一個字符串嗎?如果你用C++編碼,'s'是一個字符串,那麼爲什麼不用'std :: string'來開頭呢? –
不,不要問一個問題,得到答案,然後刪除問題。我們在這裏是一個社區,你的問題和答案可以幫助其他人。 – bolov
至於您的錯誤,請嘗試使用例如而不是「str.erase(...)」。 –