11
votes

Où obtenir iostream.h

J'essaie de faire quelque chose à Linux, mais il se plaint de ne pas trouver iostream.h. Que dois-je installer pour obtenir ce fichier?


2 commentaires

Ceci est un bug dans le code que vous souhaitez utiliser. Si possible, vous devez fournir aux responsables du projet avec un rapport de bogue.


Dupliqué possible de Pourquoi ne peut pas g ++ trouver iostream.h?


3 Réponses :


15
votes

Le nom correct de cet en-tête standard est juste iostream code> sans extension.

Si votre compilateur ne peut toujours pas le trouver, essayez ce qui suit: p>

find /usr/include -name iostream -type f -print


2 commentaires

g ++ et tout compilateur standard C ++ doit trouver automatiquement les en-têtes C ++ sans avoir besoin de leur emplacement à spécifier; En fait, la norme C ++ permet, en théorie, pour "" d'être résolue de manière à ne pas impliquer un fichier nommé "iostream" (c'est-à-dire que le compilateur est autorisé à mapper le nom de ce qu'il veut, Tant qu'il fournit les classes et fonctions de la bibliothèque standard nécessaires).


@Michael: En effet. Je serais surpris si g ++ n'a pas compilé cela après la correction de la #include directive sur iostream .



10
votes

L'en-tête est un en-tête ancêté d'avant C ++ devenu standardisé en tant que ISO C ++ 1998 (il provient du manuel de référence annoté de C ++). L'en-tête C ++ standard est . Il y a quelques différences mineures entre les deux, avec la plus grande différence étant que met le contenu inclus dans les espaces de noms des espaces de noms, de sorte que vous devez qualifier CIN, COUT, ENDL, IStream, etc. avec "STD ::". Comme un peu de hack (il s'agit d'un piratage car les fichiers d'en-tête ne doivent jamais contenir de directives "en utilisant" car ils vaincent complètement le but des espaces de noms), vous pouvez définir "iostream.h" comme suit: xxx < P> Bien que cela ne soit pas parfaitement identique à l'en-tête ancienne d'origine, cela devrait être suffisamment proche de la plupart des fins (c'est-à-dire qu'il ne devrait pas y avoir de rien ou très peu de choses que vous devrez résoudre).


0 commentaires

3
votes

J'ai besoin de compiler partport sur Debian et avait des problèmes (Centos 4.5 fonctionne bien) J'ai fait cela sans aucun succès ln -s /usr/include/c++/4.5/iostream / usr / include / c ++ / 4.5 / iostream.h

Je découvre que iostream.h fournit de C ++ et je l'ai trouvé sur Centos 4.5

Alors j'ai copié de Centos 4.5 à Ubuntu Natty Natty le fichier iostream.h et il a fonctionné
root scp@ip.ccentos-4.5: / usr / include / c ++ / 3.3.4 / Backward / iOSTREAM.H / USR / Inclure / C ++ / 4.5 / iOSTREAM.H


1 commentaires

Tu as de la chance. Les en-têtes standard ne doivent pas nécessairement être les mêmes entre les implémentations et la copie peuvent introduire des bugs immédiats ou subtils. De plus, il couvre le fait que vous utilisez un programme écrit dans une version antique de C ++ pouvant avoir d'autres bugs lors de la compilation d'un compilateur moderne.