What is the difference between 'a' and "a"?

c++, char, string

Solution

`'a'` is a character literal. It's of type `char`, with the value 97 on most systems (the ASCII/Latin-1/Unicode encoding for the letter `a`).

`"a"` is a string literal. It's of type `const char[2]`, and refers to an array of 2 `char`s with values `'a'` and `'\0'`. In most, but not all, contexts, a reference to `"a"` will be implicitly converted to a pointer to the first character of the string.

Both

cout << 'a';

and

cout << "a";

happen to produce the same output, but for different reasons. The first prints a single character value. The second successively prints all the characters of the string (except for the terminating `'\0'`) -- which happens to be the single character `'a'`.

String literals can be arbitrarily long, such as `"abcdefg"`. Character literals almost always contain just a single character. (You can have multicharacter literals, such as `'ab'`, but their values are implementation-defined and they're very rarely useful.)

(In C, which you didn't ask about, `'a'` is of type `int`, and `"a"` is of type `char[2]` (no `const`)).

Problem

I am learning C++ and have got a question that I cannot find the answer to. What is the difference between a `char` constant (using single quotes) and a string constant (with double quotes)? All my search results related to char arrays vs `std::string`. I am after the difference between `'a'` and `"a"`. Would there be a difference in doing the following: ``` cout << "a"; cout << 'a'; ```

Original source