1
string str = "abcdefgdcb";

cout << sizeof(str.substr(0,3).c_str());

何らかの理由で、上記の文字列は 8 を返します。c_str() が null 文字列を返すと仮定し、sizeof は null を使用して文字列のサイズを決定します。

4

4 に答える 4

9

sizeofは文字列の長さを提供しないため、型のサイズ (const char *この場合) を提供します。試してみてくださいstrlen

于 2012-05-19T20:49:27.497 に答える
3

c_strを返しますconst char *。システムではsizeof (const char *) == 8、他のポインタと同様に.

于 2012-05-19T20:49:42.863 に答える
2

8 は、マシン (64 ビット) 上のポインターのサイズです。これが c_str() が返すものです。

文字列の長さを取得するには、strlen を使用します。

于 2012-05-19T20:50:47.020 に答える
2

私は仮定しました... sizeofはnullを使用して文字列のサイズを決定します。

問題があります。 sizeof変数のサイズを示しますが、変数内の値とはまったく関係ありません。

于 2012-05-19T20:52:51.433 に答える