CStringオブジェクトが最大サイズを取得する場合、CStringのサイズを増やす方法。またはCStringよりも最大のデータを保持できる関数を教えてくださいCStringサイズクラス
0
A
答えて
1
CStringは文字列バッファのヒープ割り当てを使用するため、文字列長の実際の制限は条件の数によって異なり、数百MBです。
一般に、文字列がバッファを拡張する必要があるたびに、前の文字列より新しいバッファが割り当てられます。バッファの新しいサイズを決定する方法があります。システム内の使用可能なメモリの実際の量に応じて、この再割り当ては失敗するか、成功する可能性があります。失敗した場合、できることはほとんどありません。通常、プログラムを再起動することをお勧めします。
COMポートを使用して作業する場合は、可変サイズの配列として非常に便利なMFC :: CArrayを使用できます。また、std :: vectorを同じものに使うこともできます。
1
CStringでは、文字列の実際のサイズと割り当てられたバッファは符号付き整数(CStringDataをチェックアウト)によって保持されます。文字列バッファ自体は動的に割り当てられます。これは、理論上の制限が2^31文字であることを意味します。実際には、32ビット環境ではメモリの脆弱性のためにはるかに少なくなるでしょう。また、Unicode CStringを使用している場合、各文字は2バイトです。つまり、CStringバッファにはテキストが少なくなります。 64ビット環境では、2^31文字を取得できる可能性があります。
あなたは本当に長い文字列で作業しようとしていますか?あなたがCStringの長さ制限を打つ前に、おそらく多くのことがあります。
関連する問題
- 1. AfxBeginThread()+ Cstring = garbage content
- 2. CString。フォーマットの問題
- 3. CStringのエスケープ文字
- 4. リンクリストcstring挿入ソート
- 5. C++ LibCurl - CStringコードをCStringに変換する
- 6. `CString`とは何ですか?
- 7. cstringを空にする
- 8. ポインタとcstringの長さ
- 9. MFCのCStringへのLPBYTEデータ
- 10. iPhone 6sと6のサイズクラスとアプリレイアウトを無効にする
- 11. 回転の制約を保持しないサイズクラス
- 12. UISplitviewcontroller - マスターおよび詳細ビューでのサイズクラスの問題
- 13. void *をCStringに変換する方法
- 14. CStringをメッセージボックスに出力する
- 15. CString - > Memory Leakの配列ですか?
- 16. のgetlineのCString割り当て
- 17. タグ間のCStringを抽出する
- 18. _bstr_tをCStringに変換する方法
- 19. cstringをcamelcaseに変換する
- 20. サイズクラスを無効にした後にUIViewが正しく表示されない
- 21. CStringを文字配列に変換しますか?
- 22. CString形式の問題とWindows XPと7の違い?
- 23. ホスト名(IP)とポート番号(CString)を検証する方法
- 24. mfc CStringの特定のセクションをコピーします。
- 25. CString参照でアンマネージC++ DLLを呼び出す方法
- 26. 空のCStringを割り当てる方法は?
- 27. CString Format()がメモリを読み取れません。
- 28. MFC CStringを符号なし整数に変換する
- 29. CStringをconst char *に追加するには?
- 30. cstringをpython文字列オブジェクトに変換する
実際に発生する問題は何ですか? – sharptooth
だから、CStringの最大サイズは –
です。また、CStringのサイズを増やすことができるDynamic CStringを作成する方法もあります。 –