2017-01-02 16 views
1

私は現在開発中のプログラムでかなり大きな文字列を構築/連結しています。文脈を与えるために、完全な文字列は端末のサイズを持っています。私はターミナルアプリケーションを開発しているので、これはかなり起こります。私はデータ構造Bufferを見つけました。これは、標準ライブラリと文字列を連結する最も効果的な方法のようです。Ocamlバッファー修正の特定の位置

特定の位置でバッファの一部を頻繁に更新する必要がある場合は、これが正しい選択ですか? 20〜50文字を使ってみましょうか? この場合、より良い方法がありますか?

+2

ギャップバッファ&co:https://stackoverflow.com/questions/3169440/text-editor-theory – coredump

答えて

3

AFAICSの場合、最後に追加する以外はBuffer.tの内容を変更する方法はありません。たぶんあなたはモジュールBytesを見てください。 Bytes.tはどこでも変更可能ですが、長さのみ変更することはできません。しかし、あなたが必要とする長さはとにかく固定されているようです:ターミナルのサイズ(ターミナルウィンドウのサイズが変更された場合は、Bytes.tを新しいものに置き換えることができます)。

3

@coredumpと@kneは良い答えを与えてくれました。今日の世界では、バイトは文字の表現が貧弱であるということを追加するかもしれません。だからあなたは配列やbigarrayの使用を検討するかもしれません。

+0

なぜ「バイト」は文字の表現が悪いのですか? array/bigarrayのメリットは何ですか? – Seneca

+1

私が使っている端末(すべてのソフトウェア)は、どのUnicode文字も表示できます。したがって、文字はそれぞれ21ビットのようなもので表されます。 arrayとbigarrayの利点は、21ビットを保持するのに十分な大きさの要素を持つことができることです。 –

関連する問題