Zählen der tatsächlichen Länge von UTF-8-Strings
Bei der Arbeit mit UTF-8-codierten std::string-Objekten stoßen Entwickler häufig auf ein Diskrepanz zwischen dem von str.length() zurückgegebenen Wert und der tatsächlichen Anzahl der Zeichen in der Zeichenfolge. Dies liegt daran, dass str.length() einfach die Anzahl der Bytes in der Zeichenfolge zählt und nicht die Multibyte-Kodierung berücksichtigt, die zur Darstellung von UTF-8-Zeichen verwendet wird.
Die UTF-8-Kodierung definiert einen Satz von Bytesequenzen Wird zur Darstellung von Unicode-Zeichen verwendet. Jedes Zeichen kann je nach Unicode-Codepunkt durch ein bis vier Bytes dargestellt werden. Diese Bytesequenzen sind wie folgt aufgebaut:
Berechnung der tatsächlichen Länge
Die tatsächliche Länge einer UTF-8-codierten Zeichenfolge kann durch Zählen der Anzahl der ersten Bytes in der Zeichenfolge ermittelt werden, bei denen es sich um die Bytes handelt, die nicht mit dem Muster 10xxxxxx übereinstimmen. Dieses Muster stellt Fortsetzungsbytes dar, die zur Darstellung von Mehrbyte-Sequenzen verwendet werden.
Codeausschnitt
<code class="cpp">int len = 0; while (*s) len += (*s++ & 0xc0) != 0x80;</code>
In diesem Code iteriert die while-Schleife über die Zeichenfolge , wobei der Längenzähler für jedes erste Byte, auf das er trifft, um 1 erhöht wird.
Das obige ist der detaillierte Inhalt vonWie berechnet man die tatsächliche Länge einer UTF-8-Zeichenfolge in C?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!