トークンと文字セットTokens and character sets

C++プログラムのテキストは、トークンと空白で構成されます。The text of a C++ program consists of tokens and white space. トークンは、コンパイラにとって意味がある、C ++ プログラムの最小要素です。A token is the smallest element of a C++ program that is meaningful to the compiler. パーサー C++は、次の種類のトークンを認識します。The C++ parser recognizes these kinds of tokens:

トークンは通常、空白で区切られます。1つ以上の文字を指定できます。Tokens are usually separated by white space, which can be one or more:

  • 空白Blanks
  • 水平または垂直タブHorizontal or vertical tabs
  • 改行New lines
  • フォームフィードForm feeds
  • コメントComments

基本ソース文字セットBasic source character set

標準C++では、ソースファイルで使用できる基本ソース文字セットが指定されています。The C++ standard specifies a basic source character set that may be used in source files. このセットに含まれない文字を表す場合は、 ユニバーサル文字名を使用すると追加の文字を指定できます。To represent characters outside of this set, additional characters can be specified by using a universal character name. MSVC 実装では、追加の文字を使用できます。The MSVC implementation allows additional characters. 基本ソース文字セットは、ソースファイルで使用される96文字で構成されます。The basic source character set consists of 96 characters that may be used in source files. この文字セットには、空白文字、水平タブ、垂直タブ、フォーム フィードおよび改行の制御文字と、このセットのグラフィック文字が含まれます。This set includes the space character, horizontal tab, vertical tab, form feed and new-line control characters, and this set of graphical characters:

a b c d e f g h i j k l m n o p q r s t u v w x y z

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

0 1 2 3 4 5 6 7 8 9

_ { } [ ] # ( ) < > % : ; . ? * + - / ^ & | ~ ! = , \ " '

Microsoft 固有の仕様Microsoft Specific

MSVC には、基本ソース文字セットのメンバーとして $ 文字が含まれています。MSVC includes the $ character as a member of the basic source character set. また、MSVC では、ファイルのエンコードに基づいて、ソースファイルで追加の文字セットを使用することもできます。MSVC also allows an additional set of characters to be used in source files, based on the file encoding. 既定では、Visual Studio は既定のコードページを使用して、ソース ファイルを保存します。By default, Visual Studio stores source files by using the default codepage. ロケール固有のコードページまたは Unicode コードページを使用してソースファイルを保存する場合、MSVC では、基本ソース文字セットで明示的に許可されていない制御コードを除き、ソースコード内でそのコードページの任意の文字を使用できます。When source files are saved by using a locale-specific codepage or a Unicode codepage, MSVC allows you to use any of the characters of that code page in your source code, except for the control codes not explicitly allowed in the basic source character set. たとえば、日本語コードページを使用してファイルを保存すれば、コメントや識別子、文字列リテラルを日本語の文字で記述できます。For example, you can put Japanese characters in comments, identifiers, or string literals if you save the file using a Japanese codepage. MSVC では、有効なマルチバイト文字または Unicode コードポイントに変換できない文字シーケンスは許可されません。MSVC does not allow character sequences that cannot be translated into valid multibyte characters or Unicode code points. コンパイラ オプションによっては、一部の文字が識別子に使用できなくなることがあります。Depending on compiler options, not all allowed characters may appear in identifiers. 詳細については、「 Identifiers」を参照してください。For more information, see Identifiers.

END Microsoft 固有の仕様END Microsoft Specific

ユニバーサル文字名Universal character names

C++ プログラムでは、基本ソース文字セットで規定されている文字よりも多くの文字を使用できます。それらの文字は、 ユニバーサル文字名を使用して移植可能な方法で指定します。Because C++ programs can use many more characters than the ones specified in the basic source character set, you can specify these characters in a portable way by using universal character names. ユニバーサル文字名は、Unicode コード ポイントを表す文字のシーケンスで構成されます。A universal character name consists of a sequence of characters that represent a Unicode code point. これには 2 つの形式があります。These take two forms. \UNNNNNNNN は、U+NNNNNNNN 形式の Unicode コード ポイントを表すために使用します。この NNNNNNNN は、8 桁の 16 進コード ポイント番号です。Use \UNNNNNNNN to represent a Unicode code point of the form U+NNNNNNNN, where NNNNNNNN is the eight-digit hexadecimal code point number. 4 桁の \uNNNN は、U+0000NNNN 形式の Unicode コード ポイントを表すために使用します。Use four-digit \uNNNN to represent a Unicode code point of the form U+0000NNNN.

ユニバーサル文字名は、識別子、文字列リテラルおよび文字リテラルに使用できます。Universal character names can be used in identifiers and in string and character literals. ユニバーサル文字名を使用して、0xD800 から 0xDFFF の範囲に含まれるサロゲート コード ポイントを表すことはできません。A universal character name cannot be used to represent a surrogate code point in the range 0xD800-0xDFFF. その代わりに、目的とするコード ポイントを使用してください。コンパイラは、必要なサロゲートを自動的に生成します。Instead, use the desired code point; the compiler automatically generates any required surrogates. 識別子に使用できるユニバーサル文字名には、その他の制限が適用されます。Additional restrictions apply to the universal character names that can be used in identifiers. 詳細については、「 Identifiers 」および「 String and Character Literals」を参照してください。For more information, see Identifiers and String and Character Literals.

Microsoft 固有の仕様Microsoft Specific

Microsoft C++コンパイラは、ユニバーサル文字名形式の文字とリテラル形式の文字を同義として扱います。The Microsoft C++ compiler treats a character in universal character name form and literal form interchangeably. たとえば、次に示すように、ユニバーサル文字名を使用して宣言した識別子がリテラル形式で使用できます。For example, you can declare an identifier using universal character name form, and use it in literal form:

auto \u30AD = 42; // \u30AD is 'キ'
if (キ == 42) return true; // \u30AD and キ are the same to the compiler

Windows クリップボードでの拡張文字の形式は、アプリケーションのロケール設定によって決まります。The format of extended characters on the Windows clipboard is specific to application locale settings. こうした文字を別のアプリケーションから切り取って、コードに貼り付けると、予期しない文字のエンコーディングが発生することがあります。Cutting and pasting these characters into your code from another application may introduce unexpected character encodings. これは、コードの外見には現れない解析エラーの発生につながります。This can result in parsing errors with no visible cause in your code. 拡張文字を貼り付ける前に、ソース ファイルのエンコーディングを Unicode コードページに設定するようにしてください。We recommend that you set your source file encoding to a Unicode codepage before pasting extended characters. また、拡張文字の生成には、IME または文字コード表アプリを使用するようにしてください。We also recommend that you use an IME or the Character Map app to generate extended characters.

END Microsoft 固有の仕様END Microsoft Specific

実行文字セットExecution character sets

実行文字セットは、コンパイルされたプログラムで使用できる文字と文字列を表します。The execution character sets represent the characters and strings that can appear in a compiled program. これらの文字セットは、ソースファイルで許可されているすべての文字と、アラート、バックスペース、復帰、および null 文字を表す制御文字で構成されます。These character sets consist of all the characters permitted in a source file, and also the control characters that represent alert, backspace, carriage return, and the null character. 実行文字セットには、ロケール固有の表現があります。The execution character set has a locale-specific representation.