Jusqu'ici, vous n'avez créé dans votre IDE que des projets en C.
Or, en C++ on utilise un autre compilateur. Par exemple, il y a gcc qui est un compilateur C, et g++ qui est un compilateur C++. Il va donc falloir dire à votre IDE que vous allez faire du C++, sinon il appellera le mauvais compilateur (et là ça risque pas de marcher

).
Lancez donc votre IDE favori. Pour ma part, vous l'aurez compris dans les chapitres précédents, je travaille principalement sous Code::Blocks. Si vous avez un autre IDE comme Visual C++ ou Dev C++ ça marche aussi
Créez un nouveau projet de type console (eh oui, on retourne à la console pour faire nos expériences) et pensez à bien sélectionner C++.
Création d'un nouveau projet. Veillez à bien sélectionner C++
Cliquez sur "Create" pour créer le nouveau projet.
Code::Blocks crée un premier fichier nommé
main.cpp dans le projet avec quelques premières lignes de code C++.
Voici le code de base que nous propose Code::Blocks dans notre nouveau projet :
Code : C++1
2
3
4
5
6
7 | #include <iostream>
int main()
{
std::cout << "Hello world!" << std::endl;
return 0;
}
|
Si vous avez un autre IDE, supprimez le code qui a été généré et utilisez celui-ci à la place pour qu'on soit sûrs de travailler sur le même code
Intéressons-nous maintenant à chacune de ces lignes de code et voyons ce qui change pour le moment par rapport au C.
Include
Code : C++
On reconnaît là une bonne vieille directive de préprocesseur.
2 choses :
- Ce qui choque tout d'abord, c'est qu'il n'y a pas d'extension .h. En effet, en C++ les fichiers d'en-tête standard ne possèdent plus d'extension .h, mais vous verrez qu'il y a des exceptions (des gens qui ont pas encore fait l'évolution
).
- D'autre part, la directive d'inclusion n'est plus la même. Ici, elle s'appelle iostream, ce qui signifie "flux d'entrée-sortie". Oubliez stdlib et stdio, ce sont des en-têtes du C, on ne les utilise plus en C++.
On inclut donc ici la librairie iostream qui contient les outils nécessaires pour afficher du texte dans la console et récupérer la saisie au clavier.
Fonction main()
Code : C++1
2
3
4
5 | int main()
{
// ...
return 0;
}
|
On retrouve notre fonction main habituelle. Cela fonctionne comme en C : tout programme commence par la fonction
main(). Rien de choquant ici

La fonction retourne 0, ce qui est là encore logique puisque la fonction doit retourner un int.
cout
Code : C++1 | std::cout << "Hello world!" << std::endl;
|
La première ligne du
main est la plus intéressante, c'est d'ailleurs la seule qui doit vraiment vous surprendre.
En effet, ça ne ressemble pas à un appel de fonction, il y a plein de signes bizarres, pas de parenthèses comme on a l'habitude dans un appel de fonction. Bon sang de bonsoir qu'est-ce que c'est ?
On va découvrir ça maintenant plus en détails
cout n'est pas une fonction mais un flux, un élément nouveau introduit en C++. Notez que ça n'a rien à voir avec la POO pour le moment
Rassurez-vous, les fonctions existent toujours en C++ (d'ailleurs vous avez vu qu'il y a un main()), mais vous vous rendrez compte petit à petit qu'on ne les utilise plus de la même manière.
Le flux
cout est l'équivalent de la fonction printf... mais en mieux, en plus simple
Revoyons cette fameuse ligne de code :
Code : C++1 | std::cout << "Hello world!" << std::endl;
|
Il y a deux mots-clé particuliers dans cette ligne : cout et endl. Vous noterez qu'ils ont tous les deux le préfixe
std::
Tous les mots-clé de la librairie standard du C++ utilisent ce préfixe. Théoriquement, on est obligé de le mettre à chaque fois, mais c'est un peu lourd.
On a heureusement une solution pour se simplifier la vie. Rajoutez cette ligne de code avant le
main() :
Code : C++
Du coup, vous pouvez virer tous les préfixes
std::
Ca rend déjà notre code un peu plus facile à lire :
Code : C++1
2
3
4
5
6
7
8
9 | #include <iostream>
using namespace std;
int main()
{
cout << "Hello world!" << endl;
return 0;
}
|
Voilà un premier point de réglé. Nous ne rentrerons pas dans le détail de ce "using namespace" pour le moment (pour ne pas compliquer inutilement les choses).
Intéressons-nous de plus près à cette ligne avec cout, désormais plus lisible :
Code : C++1 | cout << "Hello world!" << endl;
|
Vous voyez qu'il y a un nouveau symbole : le chevron
<
On le rencontre d'ailleurs toujours par paire, comme ceci :
<<
Imaginez que ces chevrons représentent en fait des flèches. Du coup, la ligne se lit de droite à gauche :
- On prend le mot-clé endl, qui signifie retour à la ligne.
- On l'insère à la fin de la chaîne "Hello world!"
- On insère le résultat obtenu dans cout.
cout est la contraction de "c-out" (console out = sortie console). En bon français, vous devez prononcer cela "Ci Aoute"

cout représente la sortie en C++ (out = sortie). La sortie d'un programme, ben c'est tout simplement l'écran. Donc cout représente l'écran
Résultat des courses, ce code signifie que le texte "Hello world!" suivi d'un retour à la ligne est envoyé vers l'écran. Il faut bien imaginer que les chevrons << indiquent le sens dans lequel les données sont envoyées.
Cette ligne de code commande donc un affichage de texte à l'écran. Compilez et exécutez le programme pour voir :
Code : Console
Revenons un peu sur
endl.
endl est un mot-clé qui signifie "fin de ligne" (
end line en anglais). En fait, c'est tout bêtement un mot qui remplace le \n que vous connaissez du C, qu'on utilisait pour faire des sauts de ligne.
Ah bon, on ne peut plus utiliser \n en C++ ?
Si si. En fait, le mot-clé endl a été entre autres introduit pour améliorer la lisibilité du code source (pour ne pas qu'on mélange le "n" avec le texte à afficher).
Vous pouvez d'ailleurs tester, vous verrez que l'\n fonctionne toujours :
Code : C++1 | cout << "Hello world!\n";
|
Le résultat à l'écran est
exactement le même :
Code : Console
Désormais, j'utiliserai endl à la place de \n dans la suite du cours.
L'intérêt de cout
Pour le moment, vous devez vous dire que cout ressemble étrangement à la fonction printf, avec juste des symboles << en plus pour vous embrouiller l'esprit
En fait, c'est encore plus facile à utiliser que printf. L'intérêt se voit notamment lorsqu'on veut afficher le contenu d'une variable.
Regardez ce code, c'est super simple :
Code : C++1
2
3
4
5
6 | int main()
{
int age = 21;
cout << "Salut, j'ai " << age << " ans" << endl;
return 0;
}
|
Code : Console
Voilà, c'est assez intuitif pour que je n'aie pas besoin de vous expliquer comment ça marche
Ce qui est génial, c'est qu'on n'a plus besoin de s'embêter avec la syntaxe des printf : %d, %ld, %lf, %s, %c etc... Ici, le langage est plus intelligent, il reconnaît le type de variable qui lui est envoyé.
Sceptiques ? Ok, essayez d'ajouter une variable de type chaîne de caractère dans ce cout :
Code : C++1
2
3
4
5
6
7 | int main()
{
int age = 21;
char pseudo[] = "M@teo21";
cout << "Salut, j'ai " << age << " ans et je m'appelle " << pseudo << endl;
return 0;
}
|
Code : Console | Salut, j'ai 21 ans et je m'appelle M@teo21 |
Vous voyez, on a envoyé d'un coup à cout un entier et une chaîne de caractères, sans préciser le type de variable, et il n'a pas bronché
Pour rappel, en C on aurait dû faire :
Code : C1 | printf("Salut, j'ai %ld ans et je m'appelle %s\n", age, pseudo);
|
Non seulement il fallait se souvenir des codes %ld et %s, mais en plus les variables utilisées sont indiquées à la fin. En C++ avec cout, comme vous avez pu le constater, la variable est placée au milieu, ce qui rend le code plus facile à lire
Bien entendu, vous n'êtes pas limité à un seul cout par programme

Vous pouvez tout à fait faire plusieurs cout si vous le voulez :
Code : C++1
2 | cout << "Salut, j'ai " << age << " ans" << endl;
cout << "Je m'appelle " << pseudo << endl;
|
Résultat :
Code : Console | Salut, j'ai 21 ans
Je m'appelle M@teo21 |
Le endl à la fin de chaque cout n'est pas obligatoire. Si vous l'enlevez, il n'y aura juste pas de retour à la ligne.
Entraînez-vous un peu avec cout, vous devriez vous y habituer rapidement !
Après avoir vu comment afficher du texte, voyons voir maintenant comment
récupérer du texte saisi au clavier.
Là encore, ça fonctionne avec un système de flux, et vous allez voir que c'est un vrai régal de simplicité
Le mot-clé à connaître ici est
cin. Il vient en remplacement de la pratique (mais complexe) fonction scanf du langage C.
cin est la contraction de "c-in", ce qui signifie
entrée console. Prononcez ça comme il faut siouplaît : "Ci in"
cin représente l'entrée en C++. Et qu'est-ce que l'entrée ? C'est le clavier ! Eh oui, c'est par le clavier qu'on entre les données.
cin représente donc le clavier et permet de récupérer du texte saisi par l'utilisateur.
Tenez, on va faire un truc super original : on va lui demander son âge
Regardez comment ça fonctionne :
Code : C++
Si vous êtes un peu observateur, 2 choses doivent vous avoir choqué :
- Les flèches ont changé de sens ! Eh oui, la lecture se fait ici de gauche à droite. cin représente le clavier et envoie les données dans la variable age. Il faut donc imaginer que les données transitent du clavier vers la variable age. C'est ce qu'on appelle un flux

- Il n'y a pas de symbole & devant age ! En C, on aurait dû écrire &age pour envoyer l'adresse de la variable à la fonction pour qu'elle sache où écrire en mémoire. En C++, c'est plus la peine ! Il y a en effet un mécanisme qui remplace un peu les pointeurs qu'on appelle les références. On étudiera ça dans le prochain chapitre plus en détails.
Ne confondez pas le sens des flèches entre cout et cin. Le principe c'est que les données transitent dans un sens précis : de la mémoire vers l'écran (cout) ou du clavier vers la mémoire (cin).
Les flèches sont donc dans le sens de déplacement des informations. Avec un peu de bon sens, vous ne devriez pas vous tromper

Programmes de test de cin
Testons maintenant cin dans un petit programme. Voici le code complet :
Code : C++ 1
2
3
4
5
6
7
8
9
10
11
12 | #include <iostream>
using namespace std;
int main()
{
int age = 0;
cout << "Quel age avez-vous ?" << endl;
cin >> age;
cout << "Ah ! Vous avez donc " << age << " ans !" << endl;
return 0;
}
|
Code : Console | Quel age avez-vous ?
21
Ah ! Vous avez donc 21 ans ! |
Désolé si je me répète, mais je trouve cela d'une simplicité effarante

Finis les %ld qui nous agacent, finis les oublis de symbole & dans les scanf, finis

Bon d'accord, cette nouvelle syntaxe surprend un peu quand on a fait pas mal de C avant, mais on s'y fait vite rassurez-vous.
On peut aussi s'entraîner à demander le pseudonyme de l'utilisateur :
Code : C++ 1
2
3
4
5
6
7
8
9
10
11
12 | #include <iostream>
using namespace std;
int main()
{
char pseudo[50];
cout << "Quel est votre pseudo ?" << endl;
cin >> pseudo;
cout << "Salut " << pseudo << endl;
return 0;
}
|
Code : Console | Quel est votre pseudo ?
M@teo21
Salut M@teo21 |