[ Web Proxy ]
URL:
Viewing: https://ru.cppreference.com/cpp/string/multibyte/mbrlen [Back]  [Original]

std::mbrlen cppreference.com
cppreference.com

std::mbrlen

cppreference.com
<tbody> </tbody>
std::size_t mbrlen( const char* s, std::size_t n, std::mbstate_t* ps);

, s, ps.

std::mbrtowc(nullptr, s, n, ps ? ps : &internal) internal std::mbstate_t, , ps .

s
n s,
ps ,

0, n .

( 1 n), .

(size_t) - 1, .

(size_t) - 2, n , n.

#include <clocale>
#include <cwchar>
#include <iostream>
#include <string>

int main()
{
    //  mbrlen()     UTF-8
    std::setlocale(LC_ALL, "en_US.utf8");
    //    UTF-8
    std::string str = ""; //  u8"\u6c34"  "\xe6\xb0\xb4"
    std::mbstate_t mb = std::mbstate_t();
    int len1 = std::mbrlen(&str[0], 1, &mb);
    if (len1 == -2)
        std::cout << " 1  " << str
                  << "      (mbrlen  -2)\n";
    int len2 = std::mbrlen(&str[1], str.size() - 1, &mb);
    std::cout << " " << str.size() - 1 << "  " << str
              << "  " << len2 << "   \n";
    std::cout << "  mbrlen()   " << str
              << ",          "
              << (int)mbrlen(&str[1], str.size(), &mb) << '\n';

}

:

 1        (mbrlen  -2)
 2    2   
  mbrlen()    ,          -1


() []

() []
[virtual]
externT , internT
:
calculates the length of the externT string that would be consumed by conversion into given internT buffer
Google.
. .

(virtual protected std::codecvt -) []
C mbrlen

Web Proxy Viewer  |  New URL  |  Original Page