Fehler C2679: binary ‚>>‘: fand keinen Operator, der einen rechten Operanden vom Typ ‚std :: string‘ nimmt (oder es ist kein akzeptabler Umwandlung)
-
06-07-2019 - |
Frage
Bitte nicht zu verwechseln mit dem Titel, wie es bereits von jemandem aber für einen anderen Kontext
gefragt wurde,Der Code unten in Visual C ++ Compiler (VS2008) nicht kompiliert bekommt, sondern wirft sie diese Ausnahme:
std::ifstream input (fileName);
while (input) {
string s;
input >> s;
std::cout << s << std::endl;
};
Aber dieser Code kompiliert fein in Cygwin g ++. Irgendwelche Gedanken?
Lösung
Haben Sie alle folgenden Header enthalten?
-
<fstream>
-
<istream>
-
<iostream>
-
<string>
Meine Vermutung ist, dass Sie <string>
vergessen.
Auf einer seitlichen Anmerkung: Das std::cout
werden sollte, und std::endl
Andere Tipps
Hinzufügen @sbi Antwort, in meinem Fall die Differenz wurde mit <string>
statt <string.h>
(unter VS 2017).
Sehen Sie die folgende Antwort: ähnlichen Fall Antwort
include <string>
Versuchen mit String-Header-Datei zusammen mit <iostream>
Datei.
Es wird in einigen Compilern funktioniert auch ohne die <string>
weil die Einstellungen für verschiedene Compiler unterschiedlich sind und es ist der Compiler, der zum Lesen der Prä-Prozessor-Dateien, die mit ‚#‘ Symbol beginnen zu erzeugen, eine OBJ-Datei.
Zusätzlich zu dem, was andere gesagt. Der folgende Code war in meiner Anwendung notwendig erfolgreich zu kompilieren.
std::cout << s.c_str() << std::endl;
Eine weitere Behelfslösung dazu ist gehen Eigenschaften zu projizieren -> Allgemein -> Zeichensatz und wählt "Ues Multi-Byte Character Set" (Sie werden nicht verwenden c_str müssen (), um die Zeichenfolge)
Es gibt Nachteile mit MBCS so, wenn Sie Ihre Software zu lokalisieren, ich dagegen advize würde.