C/C++の文字列リテラルの型とは?6つの種類と使い方をわかりやすく解説
文字列リテラル(string literal)とは、ダブルクォート「" "」で囲まれた一連の文字のことを指します。また、ワイド文字列リテラルには必ず接頭辞「L」が付きます。
文字列リテラルの種類
C++11以降、文字列リテラルには接頭辞によって複数の型が用意されています。それぞれの種類と説明は以下の通りです。
| 番号 | 文字列リテラルと説明 |
|---|---|
| 1 | " " 接頭辞なしの文字列リテラル(型:const char[]) |
| 2 | L" " ワイド文字列リテラル(型:const wchar_t[]) |
| 3 | u8" " UTF-8でエンコードされた文字列リテラル(型:const char8_t[]、C++20以降) |
| 4 | u" " UTF-16でエンコードされた文字列リテラル(型:const char16_t[]) |
| 5 | U" " UTF-32でエンコードされた文字列リテラル(型:const char32_t[]) |
| 6 | R" " 生文字列リテラル(raw string literal)。エスケープシーケンスを解釈せず、そのままの文字列を記述できます |
C++における文字列リテラルの使用例
ここでは、ワイド文字列リテラルを使って英小文字を大文字に変換して出力する例を紹介します。
サンプルコード
#include <cwchar>
#include <cwctype>
#include <iostream>
using namespace std;
int main() {
wchar_t s[] = L"hello world!";
wcout << L"The uppercase string : " << L"\"is ";
for (int i = 0; i < wcslen(s); i++)
putwchar(towupper(s[i]));
return 0;
}
実行結果
The uppercase string : ""is HELLO WORLD!
このように、ワイド文字列リテラル「L" "」を利用することで、マルチバイト文字やUnicode文字を扱うことができ、wchar_t 型の配列として格納されます。目的に応じて適切な接頭辞を持つ文字列リテラルを選択することが、正確で安全な文字列処理の第一歩です。
-
C++のブール型の型指定子とは?bool型の基本と使い方を解説
C++におけるブール型の型指定子C++で真偽値(ブール値)を扱うための型指定子は bool です。この型は、true(真) または false(偽) の2つの値のみを持つことができます。基本的な宣言方法bool型の変数は、次のように宣言して初期化できます。bool myBoolean = true;また、falseを代入することも可能です。bool isActive = false;bool型の特徴取り得る値:true または false のみ(trueは1、falseは0としても扱われます)サイズ:通常は1バイト(処理系によって異なる場合があります)ヘッダーファイル:C++言語に組み込まれて
-
C#の文字列リテラルで@プレフィックスを付けるとどうなる?逐語的文字列の基本
C#では、文字列リテラルの先頭に@(アットマーク)を付けると、その文字列は「逐語的文字列(verbatim string)」として扱われます。これにより、記号の後に続く文字列内の特殊文字をエスケープする必要がなくなります。例えば、次の記述は@D:\new以下の記述と同じ意味になります。D:\\new通常の文字列リテラルでは「\」(バックスラッシュ)がエスケープ文字として解釈されるため、「\\」のように2つ重ねて記述する必要があります。しかし、@を付ければ1つで済むため、Windowsのファイルパスや正規表現などを扱う際に特に便利です。また、@プレフィックスは、長い文字列を複数行にわたって記述・