Cette page vous donne les différences entre la révision choisie et la version actuelle de la page.
chaines [2015/09/28 12:47] 88.164.129.31 [Chaînes de caractères et caractères] |
chaines [2016/06/22 14:35] (Version actuelle) krazyxx Lien chapitre suivant/précédent - bas de page |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | ^ [[hello_world|Chapitre précédent]] ^ [[programmez_avec_le_langage_c|Sommaire principal]] ^ [[histoire|Chapitre suivant]] ^ | + | ^ [[hello_world|Chapitre précédent]] ^ [[programmez_avec_le_langage_c|Sommaire principal]] ^ [[qualite_logiciel|Chapitre suivant]] ^ |
__ Todo : tabulation, retour à la ligne, quoted. Caractère spéciaux sous forme hexa. __ | __ Todo : tabulation, retour à la ligne, quoted. Caractère spéciaux sous forme hexa. __ | ||
Ligne 19: | Ligne 19: | ||
</code> | </code> | ||
- | Si vous essayer de mettre plusieurs caractères entre guillemets droits, vous obtiendrez généralement un message d'avertissement. Par exemple, le message est avec Clang dans Coliru : | + | Si vous essayez de mettre plusieurs caractères entre guillemets droits, vous obtiendrez généralement un message d'avertissement. Par exemple, le message est avec Clang dans Coliru : |
<code cpp main.cpp> | <code cpp main.cpp> | ||
Ligne 108: | Ligne 108: | ||
</code> | </code> | ||
- | L'erreur est simple à comprendre avec un peu de logique. En C++, une chaîne de caractères est délimitée par des guillemets. Le compilateur va rencontrer le premier guillemet et va l'interprété comme le début d'une chaîne (et donc tout ce qui suit sera considéré comme des caractères faisant partie de la chaîne). | + | L'erreur est simple à comprendre avec un peu de logique. En C++, une chaîne de caractères est délimitée par des guillemets. Le compilateur va rencontrer le premier guillemet et va l'interpréter comme le début d'une chaîne (et donc tout ce qui suit sera considéré comme des caractères faisant partie de la chaîne). |
<code> | <code> | ||
Ligne 140: | Ligne 140: | ||
Un autre problème se présente. Puisque le caractère ''\'' est considéré comme étant le caractère d'échappement, comment afficher le caractère ''\'' dans une chaîne ? La solution est simple, il suffit d'utiliser le caractère '\\'. | Un autre problème se présente. Puisque le caractère ''\'' est considéré comme étant le caractère d'échappement, comment afficher le caractère ''\'' dans une chaîne ? La solution est simple, il suffit d'utiliser le caractère '\\'. | ||
- | Encore une fois, il s'agit bien d'une séquence d'échappement, qui correspond à un seul caractère dans la chaîne et qui est constitué du caractère d'échappement ''\'' puis de l'identifiant ''\''. | + | Encore une fois, il s'agit bien d'une séquence d'échappement, qui correspond à un seul caractère dans la chaîne et qui est constituée du caractère d'échappement ''\'' puis de l'identifiant ''\''. |
Ligne 163: | Ligne 163: | ||
Dans certains cas, une chaîne va contenir de nombreux caractères spéciaux (par exemple, le chemin d'un fichier sous Windows, qui peut contenir plusieurs ''\'' ou des expressions régulières). Dans ce cas, il devient fastidieux (c'est pas faux !) de devoir ajouter systématiquement le caractère d'échappement ''\'' devant chaque caractère spécial. | Dans certains cas, une chaîne va contenir de nombreux caractères spéciaux (par exemple, le chemin d'un fichier sous Windows, qui peut contenir plusieurs ''\'' ou des expressions régulières). Dans ce cas, il devient fastidieux (c'est pas faux !) de devoir ajouter systématiquement le caractère d'échappement ''\'' devant chaque caractère spécial. | ||
- | Pour éviter cela, il est possible d'utiliser une chaîne brute, dans laquelle les caractères spéciaux sont ignorés. Une chaîne brute doit commencer (par défaut) par ''R"('' et se terminer par '')"'', tout ce qui trouve entre deux sera interprété comme des caractères à afficher. | + | Pour éviter cela, il est possible d'utiliser une chaîne brute, dans laquelle les caractères spéciaux sont ignorés. Une chaîne brute doit commencer (par défaut) par ''R"('' et se terminer par '')"'', tout ce qui se trouve entre les deux sera interprété comme des caractères à afficher. |
<code cpp main.cpp> | <code cpp main.cpp> | ||
Ligne 179: | Ligne 179: | ||
</code> | </code> | ||
- | Remarquez bien que les parenthèses en début et fin de chaînes (celles correspondantes à ''R"('' et '')"'') ne font pas partie de la chaîne et ne sont pas affichées. | + | Remarquez bien que les parenthèses en début et fin de chaîne (celles correspondantes à ''R"('' et '')"'') ne font pas partie de la chaîne et ne sont pas affichées. |
Si vous êtes attentif (et que vous cherchez un peu les problèmes...), vous avez peut être testé un code similaire au suivant : | Si vous êtes attentif (et que vous cherchez un peu les problèmes...), vous avez peut être testé un code similaire au suivant : | ||
Ligne 283: | Ligne 283: | ||
**Exos : ASCII art** | **Exos : ASCII art** | ||
- | ^ [[hello_world|Chapitre précédent]] ^ [[programmez_avec_le_langage_c|Sommaire principal]] ^ [[histoire|Chapitre suivant]] ^ | + | ^ [[hello_world|Chapitre précédent]] ^ [[programmez_avec_le_langage_c|Sommaire principal]] ^ [[qualite_logiciel|Chapitre suivant]] ^ |
{{tag> Cours C++}} | {{tag> Cours C++}} |