namespace std

namespace std - C++ - Programmation

Marsh Posté le 17-01-2004 à 18:12:50    

Bonjour à l'iut, on nous a dit de toujours mettre "using namespace std;" au debut de nos programmes mais on nous a pas dit pourquoi?! Donc si quelsu'un pourai brievement m'expliquer, ce serait sympa.
 
Merci

Reply

Marsh Posté le 17-01-2004 à 18:12:50   

Reply

Marsh Posté le 17-01-2004 à 18:15:31    

Reply

Marsh Posté le 17-01-2004 à 18:19:41    

en gros ca permet d'avoir les meme en-tete de fonction dans un meme programme si elle apartienne pas au meme namespace?

Reply

Marsh Posté le 17-01-2004 à 18:27:20    

c'est un référentiel lexical : les fonctions et classes de la bibliothèque standard sont définies dans std
 
alors soit tu préfixes par std:: soit tu mets la directive using qui introduit std dans le référentiel lexical courant. pour un projet de débutant, c'est ok, mais pour quelque chose de plus gros, ou tu manipules plusieurs namespace, et bien les namespace permettent de résoudre les collisions

Reply

Marsh Posté le 18-01-2004 à 10:22:15    

oki je pense avoir compri, merci, je sais enfin pourquoi je met cette ligne a chaque debut de programme

Reply

Marsh Posté le 18-01-2004 à 10:24:18    

note que tu peux très bien t'en passer


Message édité par Taz le 18-01-2004 à 10:24:27
Reply

Marsh Posté le 18-01-2004 à 17:12:23    

un petit exemple :
 

Code :
  1. #include <iostream>
  2. int main()
  3. {
  4.   std::cout << "Hello world !" << std::endl;
  5. }


 
equivaut à  
 

Code :
  1. #include <iostream>
  2. using namespace std;
  3. int main()
  4. {
  5.   cout << "Hello world !" << endl;
  6. }


Reply

Marsh Posté le 18-01-2004 à 17:29:45    

et j'en remets une couche
 
en C++, std::endl n'est pas une façon plus propre d'écrire '\n'
 
endl <-> '\n' + flush

Reply

Marsh Posté le 18-01-2004 à 21:56:30    

pour ca suffit d'aller voir dans iostream

Reply

Marsh Posté le 18-01-2004 à 23:51:10    

par contre il est tres "porky" d'utiliser using namespace std systematiquement (surtout si c pour de vieux cin/cout).

Reply

Marsh Posté le 18-01-2004 à 23:51:10   

Reply

Marsh Posté le 19-01-2004 à 00:35:26    

taz a écrit :

endl <-> '\n' + flush


 
dans le cas de cout, flush est censé vider le buffer à l'ecran je crois ?
 
pourtant c'est automatique ? ou p-e ne vide-t-il pas son buffer a chaque fois qu'il ecrit a l'ecran ? de toutes facons le buffer n'est pas lisible dans une class ostream je crois...
 
std::endl ne devrait-il donc plus etre utiliser ou reste-t-il des cas ou il est encore utile ?

Reply

Marsh Posté le 19-01-2004 à 11:10:29    

ben ça dépend: tu peux changer le mode de bufferisation de ton flux, donc ça peut être utile.

Reply

Marsh Posté le 18-05-2004 à 08:17:36    

j'ai deja vu la difference dans un programme qui faisait un 'segmentation fault', avec les endl, le texte s'afficher jusqu'au plantage et le \n n'afficher pas les dernier cout...
moralité, quand tu debug, pas d'\n :)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed