S'il vous plaît ne confondez pas avec le titre comme il a déjà été demandé par quelqu'un, mais pour un contexte différent
Le code ci-dessous dans le compilateur Visual C++ (VS2008) n'est pas compilé, mais il lève cette exception:
std::ifstream input (fileName);
while (input) {
string s;
input >> s;
std::cout << s << std::endl;
};
Mais ce code se compile bien dans cygwin g ++. Des pensées?
Avez-vous inclus tous les en-têtes suivants?
<fstream>
<istream>
<iostream>
<string>
À mon avis, vous avez oublié <string>
.
Sur une note de côté: Cela devrait être std::cout
et std::endl
.
En ajoutant @sbi réponse, dans mon cas, la différence consistait à inclure <string>
au lieu de <string.h>
(sous VS 2017).
Voir la réponse suivante: réponse à un cas similaire
En plus de ce que d'autres ont dit. Le code suivant était nécessaire dans mon application pour compiler avec succès.
std::cout << s.c_str() << std::endl;
Une autre solution consiste à aller dans les propriétés du projet -> Général -> Jeu de caractères et choisissez "Jeu de caractères multi-octets" (vous n'aurez pas besoin d'utiliser c_str () pour afficher la chaîne).
MBCS présente des inconvénients, donc si vous envisagez de localiser votre logiciel, je vous le déconseille.
include <string>
Essayez d'inclure le fichier d'en-tête de chaîne avec le fichier <iostream>
. Cela fonctionnera dans certains compilateurs même sans le <string>
car les paramètres de différents compilateurs sont différents et que c'est le compilateur qui est responsable de la lecture des fichiers de préprocesseur commençant par le symbole générer un fichier obj.