Pull to refresh

Comments 14

Ну круто же) Спасибо, интересно было почитать историю становления строк.

> CRC32

Как насчет коллизий? Вот допустим у строк A и B коллизия по именам (её шанс мал, но не равен нулю), как не вляпаться? На этапе сборки бандла проверять?

В том диапазоне текста, что набирается при использовании тегов, имен текстур звуков и моделей в игровых движках - я коллизий за все время работы встречал может пару раз. И заканчивалось это изменением имени текстуры, либо переход на 64битный хеш, ибо по времени сравнения u32/u64 разницы нет

А как обстоит дело с AnsiString (VCL) и CString (MFC)?

String в Delphi реализован поверх динамических массивов, а те в свою очередь работают за счет рефкаунтов. Строки условно не мутабельные и могут реаллоцироваться при изменении.

Однако есть ещё ShortString - это array[0..255] ofChar и PAnsiChar/PWideChar - это обычные нуль-терминированные строки

Про игровые строки не знаю, а из обычных QString самая лучшая. Реально много продуманных и полезных методов, не то что в убогой std::string.

Поддерживаю, особенно в последних версиях Qt много полезных методов, делающих всё проще

std::string скорее аскетична..
как и вся std

Хуже всего когда какая-то библиотека навязывает тебе свои строки, в частности это делает 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++, сколько разные требования по времени жизни и владению памятью

Sign up to leave a comment.

Articles