もじ‐れつ【文字列】
文字列
【英】character string, character line
文字列とは、文字の集合のことである。文書データにおいてはテキストデータを指し、特に図形や画像などのイメージデータと区別する呼称として用いられる。
また、表計算ソフトなどでは、数値データと区別する呼称として用いられる場合も多い。表計算ソフト上では、数値として入力された数字であれば、表示形式を変えることで日付や時刻や通貨といった様々な形式に変更可能であるが、文字列として入力された数字は、再度入力されない限り表示形式を変えることができない。
文字列
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2024/12/09 16:15 UTC 版)
この記事は検証可能な参考文献や出典が全く示されていないか、不十分です。(2021年3月) |
文字列(もじれつ)は、単語や文章のような、文字の連なったもの。ストリング (英: string)、テキスト (英: text) という場合もある。コンピュータ、特にプログラミングの分野で用いることが多い。
プログラミング言語における文字列
文字列の処理は、数値演算と並んでコンピュータの基本的処理である。多くのプログラミング言語に文字列を扱うためのデータ型やサブルーチン(手続き、関数、メソッドとも)などが用意されている。C#のように文字列が組み込みの基本型[注釈 1]として用意されている言語もあれば、C言語のように文字列を基本型として持たない言語もある。
FORTRANに始まる伝統的な言語では、1文字は1バイトの数値で表現され、文字列は一般にメモリ上で連続する文字のシーケンス、つまり文字の配列によって実現される。文字列の終了を示すために末尾に特定の文字を番兵として格納する方式の言語と、別途長さを示す情報を持たせる言語がある(長さの情報をどう持たせるかは実装に任されている)。前者の主要な採用例にはC言語とC++があり、終了文字としてヌル文字を使う(ヌル終端文字列もしくはゼロ終端文字列とも)。後者の例としては拡張Pascal(Extended Pascal、ISO/IEC 10206)やObject Pascalなどがある[注釈 2]。Microsoft WindowsおよびCOM環境でよく使われるBSTR
のように、ゼロ終端文字列と長さ情報を併用するデータ構造もある[5]。
コンピュータにおいて全ての情報は数値(ビットの並び:ビット列)として表現されるので、文字列中の個々の文字も最終的にはビット列として記憶され演算される。この文字とビット列との対応付けが文字コードである。プログラミング言語やオペレーティングシステムなどによって扱うことのできる文字コードに違いはあるが、同じ文字コードであれば、同じビット列から同じ文字を取り出すことができる。
1バイトで表される数値、すなわち文字のコードと実際の文字の対応付けはいくつかの方式があり、ASCIIコードが代表的なものである。その後、漢字など多くの文字を使う文化圏のために1文字を多バイト列で扱えるように言語に拡張が行われるようになった。例えばC言語の標準規格C95では、従来の1バイト文字型char
のシーケンスで論理的な1文字を表現するマルチバイト文字方式をサポートするためのライブラリ、および1バイト以上の情報を格納できるワイド文字型wchar_t
が追加された。多バイト文字のコードにはJISコード、EUC、Unicode (UTF-8/UTF-16/UTF-32) など各種ある。Javaなど後発の言語では当初からUnicodeベースの文字・文字列に対応したものもある。なお、Unicodeにサロゲートペアや結合文字、書記素クラスタ (grapheme cluster) が導入されたことで、論理的な1文字が16ビットあるいは32ビットの範囲に収まりきらなくなったため、データ構造的には文字ではなく文字列として扱わなければならないケースもある。
C言語では言語機能レベルでの文字列サポートが全く無く、文字列の長さや文字配列のバッファ長、メモリ寿命管理を意識するなどしながら慎重にプログラミングする必要がある。C言語の配列は第一級オブジェクトではなく、したがって文字列も第一級オブジェクトではない。文字列リテラルの記法やコンパイル時のリテラル連結機能はあるものの、実際の型はヌル終端の固定長文字配列である(固定長文字配列の初期化やポインタへの代入にのみ使用することができる)[6]。文字列の結合やコピーも、直感的な操作はできず、あくまでポインタ経由で文字の配列を扱うためのstrcatやstrcpyといった基本的な関数しか用意されていない。しかし、C++のようなオブジェクト指向言語をはじめ、動的言語・スクリプト言語・マクロ言語と呼ばれるものなど、後発の高水準言語ではそのような不便さや鬱陶しさなどなく文字列を直感的に扱える機能やライブラリが標準で用意されている。
JavaやC#のような後発言語では、文字列は文字配列によるバッファとその長さ情報を含むカプセル化されたデータ構造によって実現されることが一般的となっている。また、ヌル文字は終端の役割を持たないので、文字列シーケンス中にヌル文字を含むこともできる。Javaの文字型char
は2バイトのUTF-16であり、また文字列クラスjava.lang.String
で使われている内部表現もUTF-16だが、Javaクラスファイルの定数テーブルなどで使われているエンコードはModified UTF-8と呼ばれる特殊な形式である(ヌル終端文字列であってもシーケンスの途中にヌル文字に相当する代替データを含むこともできるように修正が施されている)[7]。
文字列定数(文字列リテラル)の表記には、たいていのプログラミング言語で開始記号と終了記号にダブルクォーテーションの組が使われることが多いが、シングルクォーテーションの組を使う言語や、必要に応じてどちらも使える言語もある。以下はC#の例である。
string s = "abc 123";
C++の標準ライブラリで定義されているstd::basic_string
クラステンプレートはC文字列との相互運用性があり、また内部バッファとして使われている文字配列の要素を直接変更することもできるようになっているが、後発の言語およびプログラミング環境では、通常の文字列をイミュータブルなデータ型として提供していることが多い。代表例はJavaのString
クラスと.NETのSystem.String
クラスである。文字列バッファを直接編集する場合は、JavaではStringBuffer
クラスやStringBuilder
クラスを、.NETではSystem.Text.StringBuilder
クラス[8]を使う。Objective-Cの場合、通常のNSString
クラス[9]はイミュータブルであり、編集可能な文字列型として別途NSMutableString
クラス[10]が用意されている。
脚注
注釈
- ^ C#の場合、
string
キーワードは.NETのSystem.String
型のエイリアス(別名)だが[1]、特に明示的にアセンブリ参照設定などを追加することなく標準的に使える型であり、組み込み型 (built-in type) のひとつという扱いになっている[2]。 - ^ 標準Pascal(のちにISO 7185として標準化された仕様)は、文字列型をサポートせず、文字の配列を使うしかなかったが、Pascalの初期の実装の1つであるUCSD Pascalにて、可変長の文字列型である
string
および関連する手続きや関数が導入された[3]。これはバッファとなる配列の先頭要素に文字列の長さ情報を持たせるデータ構造であり、length-prefixed stringまたはUCSD stringとも呼ばれる[4]。この文字列型は、のちに多くのPascal処理系で拡張機能として実装されるようになり、Pascal文字列とも呼ばれている。
出典
- ^ 文字列 - C# プログラミング ガイド | Microsoft Learn
- ^ 組み込み型 - C# リファレンス - C# | Microsoft Learn
- ^ UCSD Pascal: a portable software environment for small computers
- ^ 9.15.4.1. LPString
- ^ [MS-DTYP]: BSTR | Microsoft Learn
- ^ String literals (C) - cppreference.com
- ^ Chapter 4. The class File Format | Java SE 8 Specifications > Java Virtual Machine Specification | Oracle
- ^ StringBuilder Class (System.Text) | Microsoft Learn
- ^ NSString | Apple Developer Documentation
- ^ NSMutableString | Apple Developer Documentation
関連項目
文字列(テロップ)
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/04/28 16:19 UTC 版)
「完全走破!日本縦断2002キロ高速道路の旅」の記事における「文字列(テロップ)」の解説
完全走破!日本縦断2002キロ高速道路の旅の題名(大きいもの)はオープニングと二日目の最初(東名高速・静岡県内の蒲原BS付近)に表示される。 インターチェンジまたはジャンクション、サービスエリア及び東北道・首都高・東名・名神・中国道・関門橋・北九州道路/北九州直方道路・九州道に入る場合のみ、テロップが表示される。首都高・北九州道路/北九州直方道路のIC・JCT・SA・PAは表示されない。なお、東北自動車道高舘PAおよび東名高速及び名神高速道路小牧ICはテロップ表記が行われずに通過する。また進行方向から見て流入のみのハーフインターチェンジ(東京IC・瀬田西IC・中国吹田IC・中国池田IC)も同様である。 IC・JCTの場合は画面の右下にインターチェンジ名あるいはジャンクション名が表示され、SA・PAの場合は画面の右上に実際の予告案内に使われる記号を添えて表示される。JCTの場合は「小牧JCT」などと名称に「JCT」の文字列を加えて表示される。なお、サービスエリアが併設されている大津ICだけは例外でサービスエリア名とセットで表示されている。また浦和本線料金所、鳥栖JCTを除いて全ての名称には読み仮名が振られている。 実際にIC・JCT・SA・PAのテロップが表示されるのは出口または入口の約1km手前付近で表示されるが、浪岡IC等のように出口直前で表示される場合もある。 IC・JCT・SA・PAのテロップのうち、東北自動車道は緑色、東名高速道路はピンク色、名神高速道路は濃い青色、中国自動車道は薄い青色、九州自動車道はオレンジ色で表示されている。これは日本道路公団時代に道路施設協会が発行していた「SAPAガイド」のラインカラーでもあった。
※この「文字列(テロップ)」の解説は、「完全走破!日本縦断2002キロ高速道路の旅」の解説の一部です。
「文字列(テロップ)」を含む「完全走破!日本縦断2002キロ高速道路の旅」の記事については、「完全走破!日本縦断2002キロ高速道路の旅」の概要を参照ください。
「文字列」の例文・使い方・用例・文例
固有名詞の分類
「文字列」に関係したコラム
-
FX(外国為替証拠金取引)のチャート分析ソフトMT4(Meta Trader 4)での時刻表示は、MT4のダウンロード先にもよりますが、一般的には中央ヨーロッパ時間であることが多いようです。日本時間の...
- 文字列のページへのリンク