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?
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.
In der Antwort von @sbi wurde in meinem Fall <string>
anstelle von <string.h>
(unter VS 2017) eingeschlossen.
Siehe die folgende Antwort: ähnliche Fallantwort
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.
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.