erreur C2679: binaire " >>": l'opérateur n'a pas trouvé ce qui prend de la main droite opérande de type 'std::string' (ou il n'est pas acceptable de conversion)
S'il vous plaît ne pas confondre 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é, au lieu de cela, il jette cette exception:
std::ifstream input (fileName);
while (input) {
string s;
input >> s;
std::cout << s << std::endl;
};
Mais ce code compile bien dans cygwin g++. Toutes les pensées?
- Veuillez envoyer la totalité du code source.
Vous devez vous connecter pour publier un commentaire.
Avez-vous inclus tous les en-têtes suivants?
<fstream>
<istream>
<iostream>
<string>
Ma conjecture est que vous avez oublié
<string>
.Sur une note de côté: Que devrait être
std::cout
etstd::endl
.std::string
est définie dans quelques autres-tête que vous avez déjà compris, mais l'opérateur ne l'est pas. Ainsi, le compilateur acceptestring s;
, mais pas l'invocation de l'opérateur.std::cout
. Si vous êtes en cours d'exécution avecusing namespace std;
, puis il suffit decout
est assez.defined
que, dans certains d'en-tête de quelqu'un qui fait quelque chose commetypedef someType string;
?<cstring>
est la bibliothèque C standard de la chaîne de fonctions de gestion.very likely std::string is defined in some other header you already included
dans votre commentaire. Je suis un débutant en C/C++. Donc pardonnez-moi si c'est un très bête question ou la réponse est trop évidente. Je vous remercie.Ajoutant à @sbi réponse, dans mon cas, la différence était notamment
<string>
au lieu de<string.h>
(sous VS 2017).Voir la réponse suivante: cas similaire répondre
include <string>
Essayer notamment de la chaîne de fichier d'en-tête avec
<iostream>
fichier.Il travaillera dans certains compilateurs même sans le
<string>
car les paramètres pour les différents compilateurs sont différents et c'est le compilateur qui est responsable de la lecture du préprocesseur les fichiers qui commencent par " # " symbole de générer un fichier obj.En plus de ce que disaient les autres. Le code suivant a été nécessaire dans mon application pour compiler avec succès.
Une autre façon de contourner ce est d'aller dans les propriétés du projet -> Général> Jeu de Caractères et choisissez "Ues Multi-Byte Character Set" (Vous n'aurez pas besoin d'utiliser c_str() pour la chaîne de sortie)
Il y a des inconvénients à l'utilisation MBCS donc, si vous envisagez de localiser votre logiciel, j'avais advize contre cette.