Outils d'utilisateurs

Outils du Site


chaines

Différences

Cette page vous donne les différences entre la révision choisie et la version actuelle de la page.

Lien vers cette vue

chaines [2015/04/16 12:01]
gawaboumga
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.  __
  
-====== Les chaînes de caractères ======+====== Les littérales chaînes de caractères ======
  
-Comme vous pouvez remarquer, on distingue en C++ les caractères uniques et les chaînes de caractères (un ensemble de caractères). Un caractère unique sera écrit avec un guillemet simple droit, une chaîne de caractères sera écrite avec des guillemets double droits :+===== Chaînes de caractères et caractères ===== 
 + 
 +Comme vous pouvez remarquer, on distingue en C++ les caractères uniques et les chaînes de caractères (un ensemble de caractères). Un caractère unique sera écrit avec un guillemet simple droit, une chaîne de caractères sera écrite avec des guillemets doubles droits :
  
 <code cpp main.cpp> <code cpp main.cpp>
Ligne 17: 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 66: Ligne 68:
 On voit dans cet exemple simple que les chaînes "std::endl" et "1+2" s'affichent exactement tel quel, alors que le même code en dehors de la chaîne est évalué. On voit dans cet exemple simple que les chaînes "std::endl" et "1+2" s'affichent exactement tel quel, alors que le même code en dehors de la chaîne est évalué.
  
-====== Les caractères spéciaux ======+===== Les caractères spéciaux =====
  
 Si vous vous êtes amusé à tester différents messages à afficher, vous avez peut-être essayé d'afficher une barre oblique inversée ''\'' (//backslash//) ou des guillemets ''"''. Si ce n'est pas le cas, essayez maintenant : Si vous vous êtes amusé à tester différents messages à afficher, vous avez peut-être essayé d'afficher une barre oblique inversée ''\'' (//backslash//) ou des guillemets ''"''. Si ce n'est pas le cas, essayez maintenant :
Ligne 81: Ligne 83:
  
 <code> <code>
-main.cpp:4:30warningmissing terminating "character +main.cpp:4:28errorexpected ';' after expression 
-   std::cout << "hello " world" << std::endl; + 
-                              +      std::cout << "hello " world" << std::endl; 
-main.cpp:4:3error: missing terminating " character + 
-   std::cout << "hello " world" << std::endl; +                           ^ 
-   + 
-main.cpp: In function 'int main()': +                           ; 
-main.cpp:4:25: error: expected ';' before 'world' + 
-   std::cout << "hello " world" << std::endl; +main.cpp:4:34warning: missing terminating '"character [-Winvalid-pp-token] 
-                         ^+ 
 +      std::cout << "hello " world" << std::endl; 
 + 
 +                                 
 + 
 +main.cpp:4:29: error: use of undeclared identifier 'world' 
 + 
 +      std::cout << "hello " world" << std::endl; 
 + 
 +                            ^ 
 + 
 +1 warning and 2 errors generated. 
  
 </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 126: 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 145: Ligne 159:
 La liste des séquences d'échappement est donnée dans la documentation : [[http://en.cppreference.com/w/cpp/language/escape|Escape sequences]]. La liste des séquences d'échappement est donnée dans la documentation : [[http://en.cppreference.com/w/cpp/language/escape|Escape sequences]].
  
-====== Les chaînes de caractères brutes ======+===== Les chaînes de caractères brutes =====
  
 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 165: 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 213: Ligne 227:
 </code> </code>
  
-Ici, la chaîne brute est délimitée par les séquences ''R(*"'' et ''"*)''.+Ici, la chaîne brute est délimitée par les séquences ''R"*('' et '')*"''.
  
-====== Exercices ======+===== Exercices =====
  
 Modifier le code suivant pour afficher les messages demandés. [[http://coliru.stacked-crooked.com/a/e22719dacabeceda|Faire l'exercice]] Modifier le code suivant pour afficher les messages demandés. [[http://coliru.stacked-crooked.com/a/e22719dacabeceda|Faire l'exercice]]
Ligne 236: Ligne 250:
 } }
 </code> </code>
- 
-**Exos** : include, recherche quel include pour utiliser vector ? array ? etc 
  
 **Exos** : utiliser tabulation pour afficher un tableau **Exos** : utiliser tabulation pour afficher un tableau
Ligne 271: 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++}}
chaines.1429178490.txt.gz · Dernière modification: 2015/04/16 12:01 par gawaboumga