最終更新日時(UTC): 2026年04月25日 00時09分04秒
rotarymars が更新

履歴 編集

# 文字列リテラルとワイド文字列リテラルの結合(C++11)

このページはC++11に採用された言語機能の変更を解説しています。

のちのC++規格でさらに変更される場合があるため関連項目を参照してください。

## 概要

C99互換として、文字列リテラルとワイド文字列リテラルが並んでいたとき、ワイド文字列リテラルとして結合することが規定された。

それまでは、文字列リテラルとワイド文字列リテラルの結合は未定義動作だった。

## 例

    #include <iostream>

    int main()
    {
      // s1とs2、どちらもwchar_t配列となる
      const wchar_t s1[] = "hello" L" world";
      const wchar_t s2[] = L"hello" " world";

      std::wcout << s1 << std::endl;
      std::wcout << s2 << std::endl;
    }

### 出力

    hello world
    hello world

## 参照

- N1653 Working draft changes for C99 preprocessor synchronization
- WG14/N951 String literals and concatenation