文字列リテラル【string literal】
概要

「リテラル」(literal)とは、プログラミング言語の仕様で定められた、値をソースコード中に直接記述するための書式である。数値リテラルや論理値リテラル(真偽値リテラル)など、扱うデータ型ごとに固有の記述規則が定義されており、文字列リテラルはこのうち文字列型のデータを表現するための形式である。記法は言語ごとに異なる。
最も一般的な記法は "Hello World!" のようにダブルクォーテーションで文字列を囲む形式であるが、シングルクォーテーション(')で囲む言語や、JavaScriptやPythonのようにどちらも使用できる言語もある。C言語やC++言語では使い分けが明確で、ダブルクォーテーションは文字列リテラル(char型の配列)、シングルクォーテーションは文字リテラル(char型の値)を表す。見た目が似ているため初学者が混同しやすい点である。
文字列の中に改行文字やタブ文字、引用符そのものを含める場合は、先頭が「\」(バックスラッシュまたは円マーク)で始まる「エスケープシーケンス」(escape sequence)という表記を用いることが多い。改行は「\n」または「\r」「\r\n」、タブ文字は「\t」、引用符は「\"」のように記述する。
言語によってはエスケープ処理を行わずに文字列をそのまま扱う「生文字列」(raw string)に対応するものもある。複数行の文字列を扱う専用構文を備える言語もある。PHPのヒアドキュメント、Pythonの三重引用符、Javaのテキストブロックなどを用いると、改行を含む長文やHTMLコード、SQL文などを可読性を保ったままコード中に記述できる。
近年の言語では、バッククォート(`)などを用いて文字列内に変数の値を直接埋め込める「テンプレートリテラル」(template literal)という発展的な記法に対応するものも増えている。実行時には、文字列リテラルはコンパイラやインタプリタによって、言語仕様の文字列の扱いに従って、文字列型の値や文字列クラスのオブジェクト、文字型の配列などとして扱われる。処理系によっては同じ内容の文字列リテラルを複数のコード間で共有し、メモリ使用量を抑える仕組みを備えるものもある。