12

簡単な質問があります。ゼロで終了する配列strlen()内の文字のようなカウントを行う方法はありますか?char16_t

4

3 に答える 3

20

使用する

char_traits<char16_t>::length(your_pointer)

C++11-Stdの21.2.3.2struct char_traits<char16_t>および表62を参照してください。

于 2011-04-28T19:03:48.347 に答える
2

ポインタを使用して:)、先頭への重複ポインタを作成し、それをループしてwhile (*endptr++);、長さはで与えられendptr - startptrます。strlen実際にこれをテンプレート化することはできますが、コンパイルが(異なるサイズのcに対して)実行するのと同じ組み込みコードを生成しない可能性があります。

于 2011-04-28T13:01:22.487 に答える
0

Necrolisの回答には、長さにNULLバイトが含まれていますが、これはおそらくあなたが望むものではありません。strlen()は、長さにNULLバイトを含めません。

彼らの答えを適応させる:

static size_t char16len(uint16_t *startptr)
{
        uint16_t *endptr = startptr;
        while (*endptr) {
                endptr++;
        }
        return endptr - startptr;
}

受け入れられたC++の回答があることはわかっていますが、この回答は、Cを使用してこの投稿につまずいた人には役立ちます(私が行ったように)。

于 2021-12-21T16:37:42.413 に答える