Javaにあるように、CまたはC++にintern()
メソッドがありますか?存在しない場合、CまたはC++でstring interningをどのように実行できますか?CまたはC++で文字列インターンを行うにはどうすればよいですか?
答えて
boost::flyweight<std::string>
あなたが探しているものとまったく同じです。
他の方法はありますか?私はこのライブラリを認識していません –
@SuhailGuptaは現在あなたです:http://www.boost.org –
@Erick Robertsonしかし、他の方法がありますか? –
C言語にはJavaのようなintern()メソッドがありますか?
標準Cライブラリにはありません。
C言語で文字列インターンシップを実行する方法がない場合は、
大変なことに、私は恐れます。最初の問題は、Cでは "string"が明確に定義されていないことです。代わりにchar *
があります。ゼロ終了文字列を指す場合もありますし、文字位置を示す場合もあります。次に、いくつかの文字列が他のものに埋め込まれているか、スタックに格納されているという問題があります。どちらもインターンシップを不可能かつ/または無意味にします。次に、Cの文字列リテラルが、Javaが保証する方法で、インターン...されることが保証されていないという問題があります。最後に、インターンは、言語がガベージコレクションされていない場合、発生するのを待っているストレージリークであるという問題があります。それでは、Cでインターンを実装する方法は、中身の文字列を保持するためのハッシュテーブルを作成することです。文字列か、それ自身のヒープノードに割り当てられた文字列でなければ、文字列をインターンにできないという前提条件にする必要があります。ストレージリークの問題に対処するには、文字列の参照カウントを必要とします。
セマンティクスの値が の言語で、文字列インターンシップとは何でしょうか?インターンは、 の値アイデンティティを持つ文字列への参照のオブジェクトIDを強制するメカニズムです。参照セマンティクスを使用し、オブジェクトIDをデフォルトの 比較関数として使用する言語 に関連します。 C++ではデフォルトで値セマンティクスが使用されており、タイプ (std::string
など)にはIDがないため、インターンは意味をなさない。
いくつかの実装(g ++など)では、舞台裏で文字列データに参照セマンティクス の形式を使用できます。そのような実装 は、そのデータのインターンシップを拡張として提供することができます。 (G ++ は、私の知る限り、しませんが、「インターン」空 の文字列が自動的に行います。)
他のほとんどの実装では、さらに 内部参照セマンティクスを使用しないでください。 文字列最適化(MSのような)を使用してインプリメントをどのようにインテンシブしますか?データが文字通りクラス にある場合、はありません。動的に割り当てられたメモリがあります。
- 1. C#で文字列をPascalCase文字列に変換するにはどうすればよいですか?
- 2. Cの文字配列から文字列を取得するにはどうすればよいですか?
- 3. C++/Arduino:文字列/文字配列をバイトに変換するにはどうすればよいですか?
- 4. Cで文字列を整列した形式にフォーマットするにはどうすればよいですか?
- 5. C++の文字列から文字を削除するにはどうすればよいですか?
- 6. C#で文字列の最初のn行を削除するにはどうすればよいですか?
- 7. C#で文字列を文例に変換するにはどうすればよいですか?
- 8. C#でこれを行うにはどうすればよいですか?
- 9. Cで多次元配列に文字列を格納するにはどうすればよいですか?
- 10. C#で文字列をバイト配列に変換するにはどうすればよいですか?
- 11. C++でchar配列を文字列に変換するにはどうすればよいですか?
- 12. Cの関数で、未定義の文字列サイズを扱うにはどうすればよいですか?
- 13. C#からDelphi dllに文字列配列を渡すにはどうすればよいですか?
- 14. C++で入力ファイルを文字列配列に読み込むにはどうすればよいですか?
- 15. Cで部分文字列を取得するにはどうすればよいですか?例えば
- 16. メモリ効率のよいC++文字列(インターン、ロープ、コピーオンライトなど)
- 17. cで文字列配列を初期化するにはどうすればよいですか?
- 18. C++で文字列の配列を宣言するにはどうすればよいですか?
- 19. Cでサーバーからクライアントに文字列を返すにはどうすればよいですか?
- 20. PHPで文字列を日付に変換するにはどうすればよいですか? C#ので
- 21. C#で定数チェックを行うにはどうすればよいですか?
- 22. Cでチルダ展開を行うにはどうすればよいですか?
- 23. C++で最初の文字を大文字に変換するにはどうすればよいですか?
- 24. C#IP範囲を文字列配列に変換するにはどうすればよいですか?
- 25. C#で文字列から汎用クラスを作成するにはどうすればよいですか?
- 26. C#で2D文字列から要素を削除するにはどうすればよいですか?
- 27. 文字列内の文字列を文字列内で渡すにはどうすればよいですか?
- 28. C++で文字列の間でcinを使用するにはどうすればよいですか?
- 29. if文を文字列として保存するにはどうすればよいですか? C#
- 30. 接続文字列はどうすればよいですか?
ちょうどあなたが欲しいものをコーディングしてください。 –
Suhail、これらの質問をご覧ください:http://stackoverflow.com/questions/1116040/memory-efficient-c-strings-interning-ropes-copy-on-write-etc、http://stackoverflow.com/質問/ 4060411/does-stdstring-use-string-interning? – dbf
@David Schwartzキャッシングのような機能。私は文字列のインターナショナルをしたい –