Здравствуйте, Centaur, Вы писали:
_>>Кстати, почему так строку не развернуть? :) В инете этот вариант часто предлагают.
C>Так строку не развернуть, но по причинам, не имеющим почти никакого отношения к C++.
C>Проблема будет при попытке развернуть строку, содержащую многобайтный символ (который при этом вывернется наизнанку и станет невалидным). Или строку Unicode, содержащую суррогатные пары (которые тоже вывернутся наизнанку) или nonspacing диакритику в decomposed форме (которая уйдёт на соседнюю букву).
Кстати, да. Но такой проблемы не будет, если итераторы сделать правильно. Как-то так:
OctetStream utf8string;
Utf8Iterator const first = begin<Utf8>(utf8string);
Utf8Iterator const last = end<Utf8>(utf8string);
doSomething(first, last);
doSomething(std::reverse_iterator<Utf8Iterator>(last), std::reverse_iterator<Utf8Iterator>(first));