>백엔드 개발 >C++ >C에서 UTF-8로 인코딩된 문자열의 실제 길이를 확인하는 방법은 무엇입니까?

C에서 UTF-8로 인코딩된 문자열의 실제 길이를 확인하는 방법은 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-10-28 17:15:02602검색

 How to Determine the Actual Length of UTF-8 Encoded Strings in C  ?

C에서 UTF-8로 인코딩된 문자열의 실제 길이 확인

UTF-8은 가변 너비 문자 인코딩 체계입니다. 바이트 단위의 문자열 길이가 포함된 문자 수와 반드시 일치하는 것은 아닙니다. str.length() 메서드는 문자 수가 아닌 문자열의 바이트 수를 반환하므로 C에서 UTF-8 문자열로 작업할 때 문제가 될 수 있습니다.

문자 길이를 정확하게 확인하려면 C에서 UTF-8로 인코딩된 문자열인 경우 다음 접근 방식을 사용할 수 있습니다.

문자열의 첫 번째 바이트 수를 계산합니다. 첫 번째 바이트는 10xxxxxx와 일치하지 않는 바이트입니다. 이러한 바이트는 멀티바이트 문자 시퀀스의 시작을 나타냅니다.

다음은 구현 예입니다.

<code class="cpp">int len = 0;
while (*s) len += (*s++ & 0xc0) != 0x80;</code>

이 코드에서 s 포인터는 문자열을 반복하고 & 0xc0 작업은 각 바이트의 처음 두 비트를 마스크합니다. 처음 두 비트가 0b10(연속 바이트를 나타냄)인 경우 카운트는 증가하지 않습니다. 그렇지 않으면 증가하고 포인터는 다음 바이트로 이동합니다. 이 프로세스는 문자열 끝에 도달할 때까지 계속되며, 이 시점에서 len에는 문자열의 실제 문자 길이가 포함됩니다.

위 내용은 C에서 UTF-8로 인코딩된 문자열의 실제 길이를 확인하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.