Textdatei lesen und Inhalt in MessageBox ausgeben
-
Ich habe das Problem, dass ich den Inhalt einer Textdatei in einer while-Schleife nicht auslesen kann. Es kommt immer folgender Fehler: "invalid operands of types `char[200]' and `const char[2]' to binary `operator&'". Hier der Code:
char zeile[200]; while (datei.getline(zeile, 200)) { zeile += zeile & "\n"; //hier soll "zeile" eigentlich mit dem Inhalt der Textdatei gefüllt werden } MessageBox(hwnd, zeile, "Ausgabe der Textdatei", MB_OK);
-
Du weißt aber nicht wirklich was Du machst? Oder?
Erstmal ließt du eine Zeile in den String 'zeile' ein und willst eine Zeichenkette aus 'char's mit dem Operator += verbinden? Das geht nur mit std::string. Außerdem, was nützt es dir wenn Du die eigelesene Zeile in 'zeile' hast und dann hinten dran nochmal die selbe Zeile anhängen.
Lies dir bitte nochmal die Grundlagen durch...
-
#include <iterator> #include <string> #include <fstream> #include <iostream> #include <windows.h> int main() { char const * file_name { "foo.txt" }; std::ifstream file { file_name }; if( !file.is_open() ) { std::string error_msg{ "Failed to open \"" }; error_msg += file_name; error_msg += "\"!"; MessageBoxA( GetConsoleWindow(), error_msg.c_str(), "Error:", MB_ICONEXCLAMATION ); return EXIT_FAILURE; } std::string file_content{ std::istreambuf_iterator< char >( file ), std::istreambuf_iterator< char >() }; MessageBoxA( GetConsoleWindow(), file_content.c_str(), file_name, MB_OK ); }
-
Danke ihr beiden. Das war sehr hilfreich.
-
Swordfish schrieb:
/* ... */ std::string file_content{ std::istreambuf_iterator< char >( file ), std::istreambuf_iterator< char >() }; /* ... */
wahrscheinlich ist
/* ... */ std::string file_content; file.seekg( 0, std::ios::end ); file_content.resize( file.tellg() ); file.seekg( 0, std::ios::beg ); file.read( &file_content[ 0 ], file_content.size() ); /* ... */
schneller.