簡単な質問があります。ゼロで終了する配列strlen()
内の文字のようなカウントを行う方法はありますか?char16_t
3622 次
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 に答える