Fehler C2679: binary ‚>>‘: fand keinen Operator, der einen rechten Operanden vom Typ ‚std :: string‘ nimmt (oder es ist kein akzeptabler Umwandlung)

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

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?

War es hilfreich?

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.

verantwortlich ist

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top