6

std::string内に格納する長い文字列リテラルを作成しようとしています。約2600文字までのリテラルを作成すると、すべてが正常に印刷されます。そのシンボル数を超えると、ランダムなガベージ文字しか印刷されません。

私はガイダンスとしてC標準を使用していますが、環境制限は「文字列リテラル内の4095文字(連結後)」として指定されています。ただし、コードはC++で記述されています。

だから私の質問は、C ++文字列リテラルの文字の最小量は何ですか?

(問題はコードの他の場所にある可能性がありますが、標準で設定された制限を超えないようにしたいと思います。テキストはRichEditコントロールで印刷されるため、1つが原因ではないかと思います。)

4

1 に答える 1

11

最小値はで指定されています

附属書B
実施量[含意]

文字列リテラル内の文字(連結後)[65536]。

ただし、次の点に注意してください。

1)コンピューターは有限であるため、C ++の実装では、正常に処理できるプログラムのサイズが必然的に制限されます。すべての実装は、既知の場合、それらの制限を文書化する必要があります。このドキュメントでは、固定制限が存在する場合、利用可能なリソースの関数として変数制限を計算する方法、または固定制限が存在しないか不明であると述べている場合があります。

2)制限により、以下に説明するものなどを含む数量が制限される場合があります。各数量に続く括弧内の数字は、その数量の最小値として推奨されます。ただし、これらの数量は単なるガイドラインであり、コンプライアンスを決定するものではありません。(強調鉱山)

ただし、実装ではこの番号を提供する必要があります。

于 2012-10-29T16:13:31.017 に答える