#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. Это устранило ошибку, и строка теперь работает так, как задумано. Спасибо!