2016-02-03 44 views
-3

我有一個字符數組,我想查找特定子字符串的所有位置,然後我將用不同的東西替換所有的子字符串。搜索並替換字符數組中的所有字符串C++

例如:

char [35] = "the boy stole the cup from the table."; 

1.我想打印每位置"the"是。我發現了一些功能,如find,但它只找到我想要的第一個位置。我試過使用循環,但那也沒有解決。

  • 我也想要的東西,如"that" 可有人告訴我如何實現這一目標,以取代"the"所有occurence。我正在專門處理char數組而不是字符串類。
  • +1

    [的strstr(http://man7.org/linux/man-pages/man3/strstr.3.html)給你的第一個匹配的起始(作爲字符指針);如果你在那之後開始搜索至少一個角色,你會得到第二場比賽,如果有的話。至於算法,您只需在第一次匹配之前複製零件,追加替換字符串,跳過搜索字符串並再次匹配。如果你能向我們展示一些代碼,並明確表示你被卡住了? – Kenney

    +1

    向我們展示您到目前爲止所嘗試的以及您卡住的位置。這不是一個代碼寫入服務。 – MrEricSir

    +0

    '我發現了一些像find這樣的函數,但它只找到我想要的第一個位置。我嘗試過使用循環,但那也沒有解決。「然後,你正在使用'find',因爲這正是你如何解決這個問題。發佈您的代碼。 – user657267

    回答

    0

    試試這個功能。我認爲它會奏效。

    void find_and_replace(string& source, string const& find, string const& replace) 
    { 
        for(string::size_type i = 0; (i = source.find(find, i)) != string::npos;) 
        { 
         source.replace(i, find.length(), replace); 
         i += replace.length(); 
        } 
    } 
    
    
        content = "this is c++ programming"; 
    
        find_and_replace(content, "c++", "java");