Wenn ifstream Klasse mit Worten aus einer Eingabedatei zu lesen, habe ich den folgenden Ausdruck verwendet:Unterschiede in der Lesedatei mit ifstream in g ++ und msvc
#include <iostream>
#include <fstream>
int main(int argc, char *argv[])
{
std::ifstream inputStream(myFile.txt);
std::string myString;
myFile.open()
while(myFile.good())
{
myFile >> myString;
printf("%s \n", myString);
}
return 0;
}
Der Inhalt MYFILE.TXT ist: "Diese ist ein einfaches Programm. "
Die kompiliert und führt wie erwartet mit g ++ - Compiler.
Derselbe Code, wenn mit msvc 2008 kompiliert wird, gibt Fehler bei dem Extraktionsoperator (>>) zurück, der erfordert, dass ich den std :: string mit einem initialisierten Zeichenarray oder einem beliebigen unterstützten systemeigenen Typen ersetze.
Dies warf mich ab, da ich erwartet hatte, dass die Verwendung der Standardbibliothek bei allen Implementierungen gleich ist.
Ich verstehe den Kompilierfehler und weiß, wie man es mit Hilfe von c_str() beheben kann.
Aber es würde mir sehr helfen, wenn jemand klären könnte, warum die Verwendung der Standardbibliothek plattformübergreifend ist.
Für mich ist es nicht mehr Standard!
EDIT: Code aktualisiert, um abgeschlossen zu sein. Der Inhalt von myFile.txt wurde aktualisiert.
Was ist 'myFile '? Sie haben keinen definiert. Wenn ot 'inputStream' ist, hat letzterer kein' open' ohne Argumente. – Lol4t0
@ Lol4t0 Code aktualisiert, um abgeschlossen zu sein. Außerdem ist der Modus standardmäßig ios_base :: in. Referenz unter: http://www.cplusplus.com/reference/iostream/ifstream/open/ –
@JerryCoffin: Machen Sie als die Antwort, ich bin von diesem gebissen vor –