2013-07-03 3 views
-6

Как я могу разобрать строку, заданную пользователем, и заменить все вхождения старой подстроки новой строкой. У меня есть функция для работы, но я действительно не уверен, когда дело доходит до строк.Разбор строки и подкачки подстановки

void spliceSwap(char* inputStr, const char* oldStr, const char* newStr ) 
+0

Это домашнее задание? – 0x499602D2

+0

Можем ли мы увидеть код, который вы пробовали до сих пор? – Borgleader

+1

Это на C или C++? Если это C++, используйте 'std :: string'. Если это C, пометьте его соответствующим образом. –

ответ

2

Самое простое решение заключается в использовании Google (First link) здесь. Также имейте в виду, что в C++ мы предпочитаем std::string по сравнению с const char *. Не пишите свой собственный std::string, используйте встроенный. Ваш код выглядит более C чем C++!

0
// Zammbi's variable names will help answer your question 
// params find and replace cannot be NULL 
void FindAndReplace(std::string& source, const char* find, const char* replace) 
{ 
    // ASSERT(find != NULL); 
    // ASSERT(replace != NULL); 
    size_t findLen = strlen(find); 
    size_t replaceLen = strlen(replace); 
    size_t pos = 0; 

    // search for the next occurrence of find within source 
    while ((pos = source.find(find, pos)) != std::string::npos) 
    { 
     // replace the found string with the replacement 
     source.replace(pos, findLen, replace); 

     // the next line keeps you from searching your replace string, 
     // so your could replace "hello" with "hello world" 
     // and not have it blow chunks. 
     pos += replaceLen; 
    } 
}