Problem mit Lesen einer Datei und Rückgabe der Strings
-
Ich habe angefangen mir mit C++ Dll-Dateien für Basic zu schreiben aller dings habe ich ein Problem mit der Rückgabe des Strings und ich komm einfach nicht drauf!
Das Problem ist allerdings schon beim Kompilieren der Datei!
Hier mal der Code:
#include <windows.h> #include <iostream> #include <fstream> #include <string> using namespace std; /* PLatzhalter für mehrere Dll Functionen */ LONG __declspec(dllexport) __stdcall ReadFullFile ( CHAR *filename, CHAR *rettxt ) { string line; string retour; ifstream infile; infile.open(filename); while (! infile.eof() ) { getline(infile, line); retour = retour + "|" + line; } infile.close(); sprintf ( rettxt, "%s", retour ); return 0; }Vl kann mir ja jemand Halfen
mfg Michael
-
Du kannst C++ Objekte nicht so ohne weiteres an eine C-Ellipse anhängen, das fliegt dir vermutlich zur Laufzeit um die Ohren (sprintf() würde retour als char-Zeiger interpretieren - und nur Müll erhalten). Stattdessen solltest du die Methode std::string::copy() verwenden, um den Stringinhalt in dein char-Array zu füllen.
PS: Bist du dir überhaupt sicher, daß du auf der Gegenseite genug Platz bereitgestellt hast? char-Zeiger ohne Größenangaben zu verwenden kann schnell zu Problemen führen.
-
LONG __declspec(dllexport) __stdcall read_file (const CHAR* file_name, CHAR* content, UINT max_size) { std::ifstream file_stream(file_name); if (!file_stream) return 1; std::string string_line; std::string tmp_content; while (std::getline(file_stream, string_line)) tmp_content += "|" + string_line; std::strncpy(content, tmp_content.c_str(), std::min<std::size_t>(tmp_content.size(), max_size)); return 0; }... so vllt?