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 중국어 웹사이트의 기타 관련 기사를 참조하세요!