string文字列の使い方


備考

このセクションでは、文字列の概要、および開発者がそれを使用する理由について概要を説明します。

また、文字列内の大きな件名についても言及し、関連するトピックにリンクする必要があります。文字列のドキュメントは新しいので、これらの関連トピックの初期バージョンを作成する必要があります。

バージョン

バージョンリマーク発売日
ASCII文字列 7ビット 1963年6月17日
UTF-8 8ビットのデフォルト、サロゲートによる可変長 1992-09-30
UCS-2 サロゲートのないUTF-16のような16ビットは、私のMicrosoft Windows NT 1993-07-23
UTF-16 16ビットのデフォルト、サロゲートによる可変長 1996年7月31日

文字列

文字列は一連の文字リテラルです。現在までに、文字列は、すべての近代的なプログラミング言語、1によってサポートされていますが、文字列を分類する方法で言語設計者間のコンセンサスはありません。プログラミング言語の設計に関しては、考慮すべき主な2つの懸念事項があります。

  1. 文字列をプリミティブまたはコンポジットの値として扱うべきか?
  2. 言語自体が提供する文字列操作は何ですか? 2

文字列をプリミティブな値にすることにより、言語によって提供される文字列操作はすべて組み込みです。言語自体で定義することはできません。これにより、コンパイラレベルでの特定の最適化が可能になります。特にメモリレイアウトやいわゆる文字列プールを使用した文字列の再利用に関しては最適化が可能です。トレードオフは、文字列操作の代わりにドロップを使用できないことにあります。このような関数は通常の関数呼び出しを使用して呼び出す必要がありますが、組み込み演算の構文は通常ははっきりと異なります。その結果、より効果的なアルゴリズムが発見された場合、その文字列ライブラリが使用している文字列を単に変更することはできません。 Boyer-Moore文字列検索アルゴリズムが開発される前に、中核的な機能セットの一部として部分文字列検索が行われているという人為的な例。

逆に、文字列を文字の配列などの合成値に定義することにより、通常の配列操作はすべて自動的に文字列に適用可能になります。ただし、これにより、言語内のすべての文字列が固定長であることになります。 3

最終的には、文字列を文字のリストとして表現し、配列の場合と同様に、すべてのリスト操作を継承することができます。

1 Pietのようなより秘密のものを保存する
2言語は、通常、文字列の比較、主に等価性、文字列の他の文字列との連結、単一文字と部分文字列の置換、文字列のレクソグラフィックソートを提供します。 3通常