Привет, ЛОР.
Старый добрый std::string
, как мы знаем, это по сути char*
на стероидах. А во многих случаях надо работать со строками именно как со строками текста.
К примеру, в библиотеке QtCore, входящей во фреймворк Qt, есть класс QString. Её часто ругают за изобретение велосипедов. Но именно благодаря этой «фабрике велосипедов» я могу написать, например, так:
QString s;
QStringList sl;
...
if (sl.contains(s, Qt::CaseInsensitive)) {
...
}
И оно мне проверит наличие строки в списке, причём регистронечувствительным (второй параметр) способом. И не только для латинских символов. То есть если в списке есть «Капибара», в строке подойдёт как «Капибара», так и «капибара». Ещё есть split()
, join()
и дофига полезного.
А как такое сделать без QtCore, на голом STL? В C++20 появился некий std::u8string
, он мне поможет, например?