Я хочу добавить новую функцию-член «charReplace» в класс строк. Функция заменит все события одного символа другим символом. Поэтому я подготовил образец кода.Как добавить функции-члены в встроенные классы в C++?
#include <iostream>
#include <string>
std::string string::charReplace(char c1, char c2) { //error in this line
while(this->find(c1) != std::string::npos) {
int c1pos = this->find(c1); //find the position of c1
this->replace(c1pos, 1, c2); //replace c1 with c2
}
return *this;
}
int main() {
std::string s = "sample string";
s.charReplace('s', 'm') /* replace all s with m */
std::cout << s << std::endl;
}
Но это не работает. При компиляции я получаю следующую ошибку в строке 4.
error: 'string' does not name a type
Я знаю, что получить тот же результат довольно легко, создав функцию, не являющуюся членом. Но я хочу сделать это, используя функцию-член. Итак, есть ли способ сделать это в C++?
P.S. Я все еще новичок в C++. Я использую его только на несколько месяцев. Поэтому, пожалуйста, постарайтесь сделать ваш ответ понятным.
Однако это все еще не работает, потому что вы не можете/не должны редактировать заголовок строки. Поэтому после добавления std ::, itll все еще жалуется на функцию, но теперь, когда она не является частью строки. –
Вот лучший способ: [Как заменить все символы символа - строка] (http://stackoverflow.com/questions/2896600/how-to-replace-all-occurrences-of-a-character-in -string) –
string - довольно сложная структура (typedef basic_string, allocator > string;) ... я бы предложил вам определить новый класс, содержащий строку, и новую функцию charReplace –
Zohar81