Как вы используете replace_if со строкой?

#c

#c

Вопрос:

Я пытаюсь заменить все пробельные символы в каждой разбираемой строке пробелом. Ключевая строка:

 replace_if( theString.begin(), theString.end(), ::isspace, " ");
  

(Частичная) ошибка, которую я могу обнаружить, это:

В функции ‘void std::replace_if(_ForwardIterator, _ForwardIterator, _Predicate, const _Tpamp;) [с _ForwardIterator = __gnu_cxx::__normal_iterator, std::allocator > >, _Predicate = int (*)(int)throw (), _Tp = char [2]]’: создается экземпляр отсюда

Как правильно использовать replace_if в этой ситуации? У меня нет доступа к Boost, поэтому я бы предпочел предложения на чистом C , пожалуйста. Я пытался изменить » » на string(» «). Я попытался создать свой собственный предикат (я новичок, поэтому не исключаю это решение полностью). Я бы предпочел использовать replace_if, но приму ответ, объясняющий, почему это слишком сложно для данной ситуации. Спасибо.

Ответ №1:

Я думаю, вы хотите использовать символьный пробел в одинарных кавычках. Строки состоят из символов, а не из строк.

 replace_if( theString.begin(), theString.end(), ::isspace, ' ');
  

Комментарии:

1. Это устранило ошибку, и строка теперь работает так, как задумано. Спасибо!