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'; ```