1
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) を取得するにはどうすればよいですか?

4

2 に答える 2

4

そのために欲しいの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++ 文字列を使用すると、多くの手間が省ける可能性があるからです)。

于 2013-06-09T11:46:59.177 に答える