2013-03-27 230 views
0

我需要在字符串刪除一個字符在字符串

例如刪除一個指定的位置:

輸入:4花

輸出:弗洛爾

我寫了這個代碼,但它給了一個輸出:弗洛(即擦除的字的其餘部分) 什麼其他功能,而不是擦除,我可以用它來實現這一目標?

int main(){ 

    int num; 
    int index = 1; 
    string s; 

    cin >> num >> s; 
    s = s.erase(num-1); 
    cout << index << " " << s << endl; 

return 0; 
} 

回答

8

嘗試:

s.erase(num-1, 1); 

您目前(有效的)呼籲:

s.erase(num-1, npos); 

(並刪除s =位,因爲沒有必要重新分配s)。

0

這個怎麼樣?

std::string removeChar(std::string const& input, size_t pos) { 
    return input.substr(0, pos-1) + input.substr(pos); 
} 

或本

std::string removeChar(std::string const& input, size_t pos) { 
    return input.erase(pos-1, 1); 
} 
1

如果你是一個初學者在C++的世界裏,我會建議你寫你自己的函數,它吧!您可以隨時使用標準功能和類。可能有人會說,爲什麼要重新發明輪子,但它不是關於重新發明,但學什麼發明的意思,就是車輪,以及它如何被髮明。

編寫我們自己的代碼(專爲C字符串!)會給你很好的編程經驗,將給予有關語法的信心,最imporatantly它會提高你的邏輯發展技能。

你的功能可能是這樣的:

​​3210

現在的問題是:將它去掉相同的字符,或只是第一個出現的所有?如果沒有出現特定字符會怎麼樣? 如果這種功能返回的東西,如果它刪除字符,或清除的櫃檯?是否需要另一個參數,即「刪除所有事件」。

快樂編碼!

0

只是嘗試 s.erase(num-1, 1),這就是你想要的。

的std :: string ::擦除的原型是

erase(size_t __pos = 0, size_t __n = npos) 

如果未提供第二個參數,默認值npos將被使用,其餘的開始從__pos將被移除。