Quelle est la différence entre cin et std:: cin?


Meilleure réponse

std est un espace de noms. Les espaces de noms ont été ajoutés à C ++ STD 90. Dans les anciennes versions de C ++, comme il ny avait pas despace de noms, vous utilisiez cout et dans C ++ moderne, vous utiliserez std :: cout.

Juste pour être complet, jai pour mentionner que si vous avez déclaré en haut que vous êtes using namespace std; alors cout signifiera std::cout .

Mais ce nest pas une méthode recommandée, et devrait être évitée en faveur dun nom std :: cout complet.

TL; DR; Les espaces de noms empêchent les conflits de noms dans les grands projets. std est lespace de noms des bibliothèques standard de C ++.

Explication: Exactement comme leur nom lindique, les espaces de noms sont utilisés pour limiter la portée des noms uniques réduisant la possibilité davoir deux entités avec le même nom. Chaque langue en a besoin et la fournit dune manière ou dune autre. Java lappelle package par exemple.

Dans un petit programme, disons 100–500 lignes, cela semble exagéré davoir une * fonctionnalité de langage * pour sassurer que tous les noms sont uniques ou quelque chose comme ça. Mais les conflits de noms peuvent se produire de manière plus discrète. Si jai écrit une bibliothèque qui a une classe nommée XYZ et que votre autre ami a écrit une autre bibliothèque qui porte dailleurs le même nom de classe XYZ. (Les cours peuvent servir à des fins différentes ou identiques, mais cela na pas dimportance.) Nous naurons aucun problème à nos extrémités. Supposons maintenant que vous développiez un logiciel et que vous utilisiez LES DEUX bibliothèques. Maintenant, votre projet a deux définitions de la classe XYZ. Cela cassera simplement la construction, et même si probablement vous nutilisez / navez besoin daucune des deux classes, simplement parce quelles sont définies avec le même nom, il sera impossible de construire un code avec ces deux bibliothèques ensemble.

Les espaces de noms résolvent ce problème. Votre ami et moi aurons des espaces de noms différents pour nos bibliothèques. (Les espaces de noms doivent être uniques au monde, et donc souvent inclure lidentité du nom de la société de développement, de sorte que dautres développeurs qui écrivent une bibliothèque ne choisissent pas le même espace de noms pour leur bibliothèque)

Un classique Un exemple est la classe List en Java. Il y a 2 listes. Lun est une interface pour la structure de données List. Lautre est la liste des composants GUI List. Vous pouvez utiliser les deux dans un programme, et dans ce cas, vous les référerez par des noms complets (java.util.List ou java.awt.List). Les packages vous permettent dutiliser les mêmes noms, sinon si nous essayons dajouter les deux, le compilateur ne saura jamais quelle liste vous voulez et annoncera une erreur en raison de lambiguïté (ayant 2 significations également déductibles dune seule instruction).

std est le nom choisi pour la bibliothèque standard C ++.

Cela signifie que tout dans les bibliothèques standard sera trouvé sous std, et dans le code sera référencé comme std :: cout, std :: string , std :: map et ainsi de suite.

Cela signifie également que vous ne devez PAS définir quoi que ce soit dans lespace de noms std, et que vous devez créer un espace de noms séparé chaque fois que vous écrivez une bibliothèque, afin de ne pas polluer espace de noms std.

Réponse

Si vous utilisez un ancien compilateur, alors simplement cin fonctionnera bien.

Mais avec le C ++ moderne, tous les éléments standard sont enveloppés dans lespace de noms std .

Les espaces de noms aident à éviter les conflits de noms entre bibliothèques ou fichiers den-tête.

Donc, si vous utilisez la compilation moderne euh, alors vous devez importer lespace de noms brepour pouvoir lutiliser, ou si vous ne voulez pas importer toutes les constructions mais seulement certaines dentre elles, utilisez std :: cin ou std :: cout.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *