Здравствуйте, saf_e, Вы писали:
_>И std::string и std::wstring кросс-платформены
все же std::wstring я бы не назвал кроссплатформенным из-за разного размера wchar_t у VS и gcc. в частности, на линуксе std::wstring часто интерпретируется, как UTF-32, а на винде, как UTF-16 (или как UCS-2)
по теме: многое зависит от сценариев использования. универсальных строк нет, у всех есть свои преимущества и недостатки.
лично я по дефолту использую basic_string, т.к. это стандартно (нет внешних зависимостей) и минимум накладных расходов; и пишу я обычно серверный софт (пусть даже и локализованный). использовать в юникодном гуе icu или другие жирные строки считаю нормальным ибо в гуе обычно перформанс не так важен, а корректность работы с разными языками важнее.