string str = "abcdefgdcb";
cout << sizeof(str.substr(0,3).c_str());
何らかの理由で、上記の文字列は 8 を返します。c_str() が null 文字列を返すと仮定し、sizeof は null を使用して文字列のサイズを決定します。
sizeof
は文字列の長さを提供しないため、型のサイズ (const char *
この場合) を提供します。試してみてくださいstrlen
。
c_str
を返しますconst char *
。システムではsizeof (const char *) == 8
、他のポインタと同様に.
8 は、マシン (64 ビット) 上のポインターのサイズです。これが c_str() が返すものです。
文字列の長さを取得するには、strlen を使用します。
私は仮定しました... sizeofはnullを使用して文字列のサイズを決定します。
問題があります。 sizeof
変数のサイズを示しますが、変数内の値とはまったく関係ありません。