Эта строка неверна:
reversed_word = (word.rbegin(), word.rend());
Сообщение об ошибке не требует пояснений. Вот упрощенная версия, чтобы вам было легче ее понять:
нет жизнеспособного преобразования из 'reverse_iterator' ... в ... 'std :: string'
Вы не можете назначить (обратный) итератор для строки, но это именно то, что вы пытаетесь сделать. Выражение (word.rbegin(), word.rend())
не создает новую строку, как вы ожидаете. Он просто оценивает два итератора как есть, разделенные оператором запятой , который возвращает значение справа. Таким образом, приведенная выше строка практически такая же:
reversed_word = word.rend();
Чтобы сделать то, что вы пытаетесь, вам нужно вместо этого передать итераторы конструктору std::string
. Либо так:
string reversed_word;
...
reversed_word = string(word.rbegin(), word.rend());
Или вот так 1 :
string reversed_word(word.rbegin(), word.rend());
1: как показано в в этом ответе на вопрос, с которым вы связаны, и даже показано в вашем собственном вопросе, где вы говорите: «Я сделал это, используя ...».