Здравствуйте, greenpci, Вы писали:
G>>>std::string ::ToLower() это еще одно выделение памяти и копирование или move (который появился относительно недавно). E__>>Хотел бы я знать, как ты собираешься делать ToLower или ToUpper без перевыделения памяти. Учитывая, что ascii давно на помоечке, а в юникоде эта операция запросто может привести к увеличению фактической длины строки в байтах — и как ее затокать назад в исходный буфер? G>Во вторых, смотри char16_t и char32_t, которые были добавлены в С++11 с целью обеспечить фиксированную длину символа.
В некоторых языках есть некоторые извраты. Например для немецкого: ToUpper ("ß") == "SS".