サイズ()関数は、使用タイプstirng長さを算出する音符戻り値size_typeのタイプ

       論理的に、サイズ()メンバ関数は、整数値であると思われる戻り、実際には、サイズの操作は、文字列型の値:: size_typeを返します。私たちは、このタイプのいくつかの研究を行う必要があります。

       クラスの文字列型とライブラリの多くの他のタイプは、支持タイプ(コンパニオンタイプ)の数と定義されています。これらのタイプをサポートすることで、タイプライブラリは、機械(マシンに依存しない)に関係なく使用することができます。size_typeは、これらのパッケージタイプの一つです。任意の文字列オブジェクトことを確実にするために、符号なし(unsigned int型又は長い符号なし)と同じ意味を有するだけでなく、十分な長さを格納することができるように定義されます。定義された文字列型size_type型を使用するために、プログラマは、ストリングクラスの定義で使用されるスコープオペレータsize_typeのタイプを示すために添加しなければなりません。

      私たちは、文字列型の正確な定義:: size_typeを知らないが、それは符号なしの型を参照することができますが。データの任意のタイプのために、それは二回対応する符号付きタイプよりも大きい最大符号なしのタイプの正の整数で表すことができます。このような最上位ビットは数値の符号を表す符号ビット、符号なし整数ワード4であり、これはあるタイプの符号付き整数、符号なし整数を表すことができ、二回の最大整数にunsigned int型で表さ最大整数値としてセクション、およびこの数の値を表すビットの数は、残りの15ビットである; unsigned int型のために、それは4バイトであり、その値は、すべての16のサイズは、数を示すために使用されます、それが唯一の正の数とすることができます。この事実だけでは、int型を格納されている文字列の長さのsize_typeが二倍を格納できる、ということを示しています。

     別の問題があるタイプの長さを表すために使用される整数列、一部のマシンintは変数の範囲を表す小さすぎる、偶数列オブジェクトの実際の長さを保存しないではありません。例えばいくつかのマシンでは、int型のみ2バイト、または16サイズのビット、およびわずか16 32767を表す最大の正の整数ポテンシャルエネルギー、我々はすべての種類の文字列に保存されたファイル内のすべての文字を入れた場合、それはありますあなたはこの最大長を超える場合があります。したがって、文字列オブジェクトのサイズを保存するためのオーバーフロー最も安全な方法を避けるためには、標準タイプライブラリの文字列:: size_typeを使用することです。

     例えば:

     書式#include <iostreamの>

     書式#include <文字列>

     名前空間stdを使用。

     メインint型()

     {

    文字列strTest(「これは文字列です!」);

    文字列:: size_type長= strTest.size()。

    裁判所未満<<「strTestのサイズは次のとおりです。」<<長<<てendl;

     }

ます。https://www.cnblogs.com/hongfenglee/archive/2012/02/14/2350836.htmlで再現

おすすめ

転載: blog.csdn.net/weixin_34061555/article/details/94102379