char* string = "hello there";
cout << sizeof( string ); // prints 4, which is the size of pointer
cout << sizeof( *string ); // prints 1, which is the size of char
文字列に含まれる文字数 (11) を取得するにはどうすればよいですか?
そのために欲しいのstrlen
はあなたですsizeof
。1 つ目は終端の NUL までの文字数をカウントし、2 つ目は型のサイズを示します。この場合、基になる文字配列ではなくポインターです。
その最後の点で、私は意味します:
char *x = "hello there";
char y[] = "hello there";
std::cout << sizeof(x) << ' ' << sizeof(y) << '\n';
ほとんどの場合、次のような出力が得られます。
4 12
32 ビット ポインター (および 8 ビットchar
) を持つシステム上。その場合、4
はポインターのサイズ、12
は配列内のバイト数 (末尾の NUL を含む) です。
いずれにせよ、strlen()
C 文字列の長さを取得する正しい方法であるため、それは議論の余地があります (そうです、C++ の場合でも、C++ 文字列を使用することを検討することをお勧めします。C++ 文字列を使用すると、多くの手間が省ける可能性があるからです)。