Количество символов в строке (UTF-8)

  1. #include <iostream>
  2. #include <locale>
  3. #include <cstring>
  4.  
  5. using namespace std;
  6.  
  7. int getStrLen(char *arr) {
  8.     mbstate_t state = mbstate_t();//locale state
  9.     const char* ptr = arr;
  10.     const char* end = ptr + strlen(ptr);
  11.     int len, size = 0;
  12.     wchar_t wc;
  13.     while((len = mbrtowc(&wc, ptr, end-ptr, &state)) > 0) ptr += len,  size++;
  14.     return size;
  15. }
  1. char *test = "Текст1";
  2. std::cout << getStrLen(test); // 6
  3. std::cout << strlen(test); // стандартная фенкция: 11

Реклама

Мы в соцсетях

tw tg yt gt