2010-11-28 12 views
3

標準の文字列(別名std :: string + stringライブラリ)にいくつの文字が収まるかを知りたいので、変数kbsまたはプレーンテキストのmbsを格納する必要があります。C++文字列にはいくつの文字が入りますか?

ありがとうございました。

+0

メモリにまとめて保存する必要がありますか? – dreamlax

+1

std :: ropeは大きな文字列を操作するのに便利で、ディスク上の文字列を効率的に処理するためにmmapすることができます。 –

+0

'std :: rope'? SGIにはロープクラスがありますが、(現在の)C++にはありません。 – MSalters

答えて

8

std::stringには、その実装のstd::stringの最大長を返すメンバー関数max_size()があります。

+0

このメソッドが静的ではない理由がありますか?私が想像することができるのは、実装では最大サイズを計算するときに実際のメモリ消費量を考慮することができますが、imhoはあまり使用されず、インスタンスを最初に作成しなければならないというデメリットをはるかに凌駕しないことです。 – user463035818

+0

@ tobi303 'std :: string :: max_size'は静的プロパティを取得しません。文字列に使用されるアロケータの 'max_size()'関数を呼び出します。したがって、これは[Allocator'](http://en.cppreference。 com/w/cpp/concept/Allocator)が使用されています。私は二重チェックはしていませんが、自分の 'Allocator'を使わないと、デフォルト値は' 'std :: numeric_limits :: max()']です(http://en.cppreference .com/w/cpp/types/numeric_limits)。 – birryree

+0

ああありがとう私はアロケータについて忘れてしまった。 – user463035818

4

これは実装によって異なります。 std :: string :: max_size()を呼び出して見つけてください。

関連する問題