Comments 14
Ну круто же) Спасибо, интересно было почитать историю становления строк.
> CRC32
Как насчет коллизий? Вот допустим у строк A и B коллизия по именам (её шанс мал, но не равен нулю), как не вляпаться? На этапе сборки бандла проверять?
А как обстоит дело с AnsiString (VCL) и CString (MFC)?
Про игровые строки не знаю, а из обычных QString самая лучшая. Реально много продуманных и полезных методов, не то что в убогой std::string.
Хуже всего когда какая-то библиотека навязывает тебе свои строки, в частности это делает Qt, вот че ни делай, а от них не уйдешь ну и код постоянно пронизан конверсиями, потому что другие библиотеки или хотят std::string или свои(что уже большая редкость). Но QString какими бы они классными не были это мракобесие и кошмар любого кода на Qt. Сядьте в комитете договоритесь раз и используйте одни строки. А раньше еще очень любили данные в строки прятать, благо сейчас все чаще вижу std::vector<std::uint8_t>
UDP. Ладно я понимаю что нельзя одни строки придумать для всего с++, есть железки где это неуместно, значит надо какие-то уровни фичей делать в стандарте, минимальный, только с базовыми фичами, и дальше там 1, 2, 3 уровень, да то же не сильно хорошее решение, ну а какой вариант? Либо единый стандарт и с++ работает на калькуляторах, но все страдают, либо абстракции высокого уровня с расплатой в виде перфа и большинство радуются, а кому надо работают с базовыми версиями языка.
UDP2: если Qt когда-то перейдет на std::string я напьюсь в дрова по этому поводу и буду танцевать на столе(рабочем). Но этого не будет.
Не раскрыта тема TString в Яндексе.
А это что за зверь то такой?
В Яндексе есть Аркадия -- монорепа, которая в том числе содержит стандартную библиотеку Яндекса, которую использовал сначала Поиск, а потом и всё остальные проекты. Эта библиотека содержала тип Stroka (напомню, что Яндекс.Поиск появился раньше, чем std::string), который был был позже переименован в TString. В году 2019 TString хотели заменить на std::string, но чем всё кончилось, я не знаю.
Кстати, был тип Wtroka (аналог std::wstring), который произносился как "штрока".
Круто, даже не задумывался, что зоопарк такой большой.
Когда начинал программировать и узнал, что литералы живут до конца программы - хотелось их не использовать вовсе, казалось, что столько памяти пропадает зря.
Самое забавное, что половину этого зверинца порождает не столько C++, сколько разные требования по времени жизни и владению памятью
Зоопарк строк в вашем C++ коде?