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';
'a'is a character literal. It’s of typechar, with the value 97 on most systems (the ASCII/Latin-1/Unicode encoding for the lettera)."a"is a string literal. It’s of typeconst char[2], and refers to an array of 2chars 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
and
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 typeint, and"a"is of typechar[2](noconst)).