Heim  >  Artikel  >  Backend-Entwicklung  >  Wie kann man die Länge einer UTF-8-codierten Zeichenfolge in C genau bestimmen?

Wie kann man die Länge einer UTF-8-codierten Zeichenfolge in C genau bestimmen?

Barbara Streisand
Barbara StreisandOriginal
2024-10-26 05:58:02551Durchsuche

How to Accurately Determine the Length of a UTF-8 Encoded String in C  ?

Bestimmen der UTF-8-codierten String-Länge

In C kann die std::string-Codierung variieren und die Funktion length() verwenden Eine UTF-8-codierte Zeichenfolge kann zu einer ungenauen Darstellung ihrer tatsächlichen Länge führen. Um die richtige Länge zu ermitteln, berücksichtigen Sie die folgenden Bytesequenzmuster:

0x00000000 - 0x0000007F:
       0xxxxxxx

0x00000080 - 0x000007FF:
       110xxxxx 10xxxxxx

0x00000800 - 0x0000FFFF:
       1110xxxx 10xxxxxx 10xxxxxx

0x00010000 - 0x001FFFFF:
       11110xxx 10xxxxxx 10xxxxxx 10xxxxxx

So berechnen Sie die tatsächliche Länge einer UTF-8-codierten Zeichenfolge:

  1. Initialisieren Sie eine Variable len auf 0 .
  2. Durchlaufen Sie die Zeichenfolge Zeichen für Zeichen.
  3. Überprüfen Sie für jedes Zeichen, ob es dem Bytesequenzmuster für ein Einzelbyte-Zeichen (0xxxxxxx) folgt.
  4. Wenn Wenn dies der Fall ist, erhöhen Sie len um 1.
  5. Andernfalls überspringen Sie das/die aktuelle(n) und nächste(n) Byte(s).

Der folgende Codeausschnitt veranschaulicht die Implementierung:

<code class="cpp">int len = 0;
const char *s = str.c_str(); // convert to C-style string
while (*s) len += (*s++ & 0xc0) != 0x80;</code>

Das obige ist der detaillierte Inhalt vonWie kann man die Länge einer UTF-8-codierten Zeichenfolge in C genau bestimmen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn