erreur C2679: binaire '> >' : aucun opérateur trouvé qui prend un opérande de droite du type 'std :: string' (ou il n'y a pas de conversion acceptable)

StackOverflow https://stackoverflow.com/questions/1631338

Question

Veuillez ne pas confondre le titre avec le titre car 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 est bien compilé en cygwin g ++. Des pensées?

Était-ce utile?

La solution

Avez-vous inclus tous les en-têtes suivants?

  • < fstream >
  • < istream >
  • < iostream >
  • < chaîne >

Je suppose que vous avez oublié . .

Note: cela devrait être std :: cout et std :: endl .

Autres conseils

Ajoutant à la réponse @sbi , dans mon cas, la différence consistait à inclure < chaîne > au lieu de < chaîne. h > (sous VS 2017).

Voir la réponse suivante: réponse à un cas similaire

inclure < chaîne >

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 < chaîne > car les paramètres des 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 '#' afin de générer un fichier. Fichier obj.

En plus de ce que d'autres ont dit. Le code suivant était nécessaire dans mon application pour pouvoir compiler avec succès.

std::cout << s.c_str() << std::endl;

Une autre solution consiste à accéder aux propriétés du projet - > Général - > Caractère et choisissez "Ues Jeu de caractères multi-octets" (Vous n'aurez pas besoin d'utiliser c_str () pour afficher la chaîne)

L’utilisation de MBCS présente des inconvénients. Par conséquent, si vous envisagez de localiser votre logiciel, je vous le déconseille.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top