「文字列」の版間の差分

削除された内容 追加された内容
編集の要約なし
編集の要約なし
8行目:
コンピュータにおいて全ての情報は数値([[ビット]]の並び:ビット列)として表現されるので、文字列中の個々の文字も最終的にはビット列として[[記憶装置|記憶]]され演算される。この文字とビット列との対応付けが[[文字コード]]である。プログラミング言語や[[オペレーティングシステム]]などによって扱うことのできる文字コードに違いはあるが、同じ文字コードであれば、同じビット列から同じ文字を取り出すことができる。
 
1バイトで表される数値、すなわち文字のコードと実際の文字の対応付けはいくつかの方式があり、[[ASCII]]コードが代表的なものである。その後、漢字など多くの文字を使う文化圏のために1文字を多バイト列で扱えるように言語に拡張が行われるようになった。例えばC言語の標準規格[[ANSI C#C95|C95]]では、従来の1バイト文字型<code>char</code>のシーケンスで論理的な1文字を表現する[[マルチバイト文字]]方式をサポートするためのライブラリ、および1バイト以上の情報を格納できる[[ワイド文字]]型<code>wchar_t</code>が追加された。多バイト文字のコードには[[ISO-2022-JP|JISコード]]、[[Extended Unix Code|EUC]]、[[Unicode]] ([[UTF-8]]/[[UTF-16]]/[[UTF-32]]) など各種ある。[[Java]]など後発の言語では当初からUnicodeベースの文字・文字列に対応したものもある。なお、Unicodeに[[サロゲートペア]]や[[結合文字]]、[[書記素]]クラスタ (grapheme cluster) が導入されたことで、論理的な1文字が16ビットあるいは32ビットの範囲に収まりきらなくなったため、データ構造的には文字ではなく文字列として扱わなけばならないケースもある。
 
C言語では言語機能レベルでの文字列サポートが全く無く、文字列の長さや文字配列のバッファ長、メモリ寿命管理を意識するなどしながら慎重にプログラミングする必要がある。C言語の配列は[[第一級オブジェクト]]ではなく、したがって文字列も第一級オブジェクトではない。文字列の結合やコピーも、直感的な操作はできず、あくまで[[ポインタ (プログラミング)|ポインタ]]経由で文字の配列を扱うための[[strcat]]や[[strcpy]]といった基本的な関数しか用意されていない。しかし、[[C++]]のような[[オブジェクト指向言語]]をはじめ、[[動的言語]]・[[スクリプト言語]]・[[マクロ言語]]と呼ばれるものなど、後発の高水準言語ではそのような不便さや鬱陶しさなどなく文字列を直感的に扱える機能やライブラリが標準で用意されている。
22行目:
*[[空文字列]]
*[[ワイド文字]]
*[[テキストファイル]]
*[[文字列探索]]
**[[正規表現]]