2.2 Literal Constants (5)

2013-10-07 15:25:07 · 作者: · 浏览: 91

For compatibility with C, string literals in C++(www.cppentry.com) have one character in addition to those typed in by the programmer. Every string literal endswith a null character added by the compiler. A character literal

  1. ’A’ // single quote: character literal 

represents the single character A, whereas

  1. "A" // double quote: character string literal 

represents an array of two characters: the letter A and the null character.

Just as there is a wide character literal, such as

  1. L’a’ 

there is a wide string literal, again preceded by L, such as

  1. L"a wide string literal" 

The type of a wide string literal is an array of constant wide characters. It is also terminated by a wide null character.

Concatenated String Literals

Two string literals (or two wide string literals) that appear adjacent to one another and separated only by spaces, tabs, or newlines are concatenated into a single new string literal. This usage makes it easy to write long literals across separate lines:

  1. // concatenated long string literal  
  2. std::cout << "a multi-line " 
  3. "string literal " 
  4. "using concatenation" 
  5. << std::endl; 

When executed this statement would print:

a multi-line string literal using concatenation

What happens if you attempt to concatenate a string literal and a wide string literal For example:

  1. // Concatenating plain and wide character strings is undefined  
  2. std::cout << "multi-line " L"literal " << std::endl; 

The result is undefined—that is, there is no standard behavior defined for concatenating the two different types. The program might appear to work, but it also might crash or produce garbage values. Moreover, the program might behave  differently under one compiler than under another.