webentwicklung-frage-antwort-db.com.de

fehler C2679: binär '>>': kein Operator gefunden, der einen rechten Operanden vom Typ 'std :: string' verwendet (oder es gibt keine akzeptable Konvertierung)

Bitte nicht mit dem Titel verwechseln, da er bereits von jemandem gefragt wurde, aber für einen anderen Kontext

Der folgende Code in Visual C++ - Compiler (VS2008) wird nicht kompiliert, sondern löst diese Ausnahme aus:

std::ifstream input (fileName);   

while (input) {
  string s;
  input >> s;
  std::cout << s << std::endl;
};

Dieser Code lässt sich aber gut in cygwin g ++ kompilieren. Irgendwelche Gedanken?

27
asyncwait

Haben Sie alle folgenden Header eingefügt? 

  • <fstream>
  • <istream>
  • <iostream>
  • <string>

Ich vermute, Sie haben <string> vergessen. 

Nebenbei bemerkt: Das sollten std::cout und std::endl sein.

75
sbi

In der Antwort von @sbi wurde in meinem Fall <string> anstelle von <string.h> (unter VS 2017) eingeschlossen.

Siehe die folgende Antwort: ähnliche Fallantwort

2
Guy Avraham

Zusätzlich zu dem, was andere sagten. Der folgende Code war in meiner Anwendung erforderlich, um erfolgreich zu kompilieren.

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

Um dies zu umgehen, gehen Sie zu den Projekteigenschaften -> Allgemein -> Zeichensatz, und wählen Sie "Ues-Mehrbyte-Zeichensatz" aus.

Es gibt Nachteile bei der Verwendung von MBCS. Wenn Sie also Ihre Software lokalisieren möchten, würde ich davon abraten.

0
Nick Delbar

include <string> 

Versuchen Sie, die String-Header-Datei zusammen mit <iostream>-Datei ..__ zu verwenden. In einigen Compilern funktioniert dies auch ohne <string>, da die Einstellungen für verschiedene Compiler unterschiedlich sind und der Compiler für das Lesen der mit dem '#' - Symbol beginnenden Präprozessor-Dateien verantwortlich ist eine obj-datei erzeugen.

0
Akshat Bhatt