「文字列」の版間の差分

削除された内容 追加された内容
編集の要約なし
編集の要約なし
2行目:
 
== プログラミング言語における文字列 ==
文字列の処理は、数値演算と並んでコンピュータの基本的処理である。多くの[[プログラミング言語]]に文字列を扱うためのデータ型や手続き、[[サブルーチン|関数]]などが用意されている。[[C Sharp|C#]]のように文字列が組み込みの基本型として用意されている言語もあれば、[[C言語]]のように文字列を基本型として持たない言語もある。
 
[[FORTRAN]]に始まる伝統的な言語では、1文字は1[[バイト (情報)|バイト]]の数値で表現され、文字列は一般にメモリ上で連続する文字のシーケンス、つまり文字の[[配列]]によって実現される。文字列の終了を示すために末尾に特定の文字を[[番兵]]として格納する方式の言語と、別途長さを示す情報を持たせる言語がある(長さの情報をどう持たせるかは実装に任されている)。前者の主要な採用例には[[C言語]]とその派生言語があり、終了文字として[[ヌル文字]]を使う([[ヌル終端文字列]])。後者の例としては[[Pascal]]などがある。
10行目:
1バイトで表される数値、すなわち文字のコードと実際の文字の対応付けはいくつかの方式があり、[[ASCII]]コードが代表的なものである。その後、漢字など多くの文字を使う文化圏のために1文字を多バイト列で扱えるように言語に拡張が行われるようになった。[[Java]]など後発の言語では当初から多バイト文字に対応したものもある。多バイト文字のコードには[[ISO-2022-JP|JISコード]]、[[Extended Unix Code|EUC]]、[[Unicode]]など各種ある。
 
C言語では言語機能レベルでの文字列サポートが全く無く、文字列の長さや文字配列のバッファ長、メモリ寿命管理を意識するなどしながら慎重にプログラミングする必要がある。C言語の配列は[[第一級オブジェクト]]ではなく、したがって文字列も第一級オブジェクトではない。文字列の結合やコピーも、直感的な操作はできず、あくまで[[ポインタ (プログラミング)|ポインタ]]経由で文字の配列を扱うための[[strcat]]や[[strcpy]]といった基本的な関数しか用意されていない。しかし、[[C++]]のような[[オブジェクト指向言語]]をはじめ、[[動的言語]]・[[スクリプト言語]]・[[マクロ言語]]と呼ばれるものなど、後発の高水準言語ではそのような不便さや鬱陶しさなどなく文字列を直感的に扱える機能やライブラリが標準で用意されている。
 
== 関連項目 ==