Re[9]: Популярность boost и STL
От: Roman Odaisky Украина  
Дата: 25.10.07 13:19
Оценка:
Здравствуйте, 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));
До последнего не верил в пирамиду Лебедева.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.