Quelle est la différence entre " a " et “a”?
Je suis en train d'apprendre le C++, et ont eu une question que je ne trouve pas de réponse.
Quelle est la différence entre un char
constante (à l'aide de guillemets simples) et une chaîne de caractères (avec guillemets)?
Tous mes résultats de recherche liées à des tableaux de char vs std::string
. Je suis, après la différence entre 'a'
et "a"
.
Y aurait-il une différence en procédant de la manière suivante:
cout << "a";
cout << 'a';
Essayez de le mettre dans plus d'un caractère et d'observer les différences.
OriginalL'auteur james | 2012-07-01
Vous devez vous connecter pour publier un commentaire.
'a'
est un caractère littéral. Il est de typechar
, avec la valeur de 97 sur la plupart des systèmes (ASCII/Latin-1/le codage Unicode pour la lettrea
)."a"
est un littéral de chaîne. Il est de typeconst char[2]
, et se réfère à un tableau de 2char
s avec des valeurs'a'
et'\0'
. Dans la plupart, mais pas tous, des contextes, une référence à"a"
va être implicitement converti en un pointeur sur le premier caractère de la chaîne.Les deux
et
arriver à produire le même résultat, mais pour des raisons différentes. Les premières impressions d'une valeur de caractère unique. La deuxième successivement imprime tous les caractères de la chaîne (sauf pour la résiliation de
'\0'
) -- qui se trouve être le seul caractère'a'
.Littéraux de chaîne peut être arbitrairement long, comme
"abcdefg"
. Les chaînes de caractères contiennent presque toujours un seul personnage. (Vous pouvez avoir multicaractère littéraux, comme'ab'
, mais leurs valeurs sont définies par l'implémentation et ils sont très rarement utile).(En C, que vous ne demandez pas à ce sujet,
'a'
est de typeint
, et"a"
est de typechar[2]
(pas deconst
)).Non, le dernier est une classe qui encapsule l'ancien, ce qui rend beaucoup plus facile à utiliser.
Non, un littéral de chaîne est de type
const char[]
, mais<string>
définit un typestd::string
. C++ hérité des littéraux de chaîne à partir de C;std::string
est spécifique au C++.Sauf qu'un
std::string
n'est pas résilié par l'une'\0'
caractère null.Je pense qu'il est intéressant de noter que c'est un domaine où C diffère du C++ d'une façon beaucoup de gens ne s'attendent pas. Comme vous (entièrement correctement), en C++ un caractère littéral comme
'a'
a typechar
-- mais en C, elle est de typeint
.OriginalL'auteur Keith Thompson
"a"
est un tableau de caractères qui se passe juste pour ne contenir qu'un seul caractère, ou deux si vous comptez le\0
à la fin.'a'
est un caractère. Ils ne sont pas la même chose. Par exemple:Cela utiliser deux différentes surcharges; voir http://codepad.org/okl0UcCN pour une démo.
"a"
est 2 personnages...Oups, à droite. Merci!
printf/stdio.h sont à éviter que des outils pour l'éclairage de C++ questions...! :-/
OriginalL'auteur Ry-
Guillemets simples sont utilisés pour entourer les chaînes de caractères. Les guillemets sont utilisés pour entourer la chaîne (tableau de caractères) littéraux.
De nombreuses interfaces, telles que
cout <<
, accepter.OriginalL'auteur Hot Licks
Une seule cité
'a'
est un littéral de typechar
. Un double cité"a"
est un nul chaîne de caractères littérale dechar
s.OriginalL'auteur ThomasMcLeod
les caractères de la matrice.
où, en cas de 'a'-> il est à caractère unique. pour que sa taille serait de 1 octet.
ou
ou on peut l'écrire ainsi
OriginalL'auteur user3425449
'a' - 1) constante de Caractère
2) taille - 1 Caractères
3) n'est Pas une collection de tableau de Caractères
"un" -1) littéraux de Chaîne
2) la taille - 2 Caractère
3) la collecte de tableau de Caractères
OriginalL'auteur ganga