bormant писал(а): ↑26.12.2015 22:27
s.xbatob
Кстати, strstr() отлично работает с символами utf8 в силу особенностей этой кодировки.
Кстати, strstr() работает с символами utf8 только потому, что разыскивается полный фрагмент строки (целое число мультибайтных символов).
А strchr() работать не будет...
А strstr() намного длиннее и неэффективнее strchr()...
Одним словом - лажа всё это!
Работать с локализованными символами (русскими, китайскими, арабскими, ...) в виде представления их char[ ]
нельзя, некорректно...
Т.е. можно, но только в том случае, когда со строкой обращаются как с единым целым ... например, ввод-вывод: ввели ... и в таком же виде позже вывели на терминал.
Во всех остальных случаях, когда нужно разбирать
контекст, содержимое строки, искать позиции, ... да длину просто -
нельзя.
А нужно использовать:
- тип символа wchar_t, строки wchar_t[ ], строчные функции wcs*() (аналоги str*()), и преобразования многобайтных представлений в широкие символы функциями группы mb*() - это всё в стиле языка C...
- тип wstring, операции ввода-вывода с потоками wcout, wcin и т.д.... - это в стиле языка C++
P.S. К сожалению, вся эта кухня
очень плохо описана в литературе, потому как англоязычных авторов она сильно не занимает...