Datei nach char* einlesen



  • Hi, ich möchte mir gerne eine Datei einlesen, dessen größe ich nicht zwangsläufig kenne und diese dann gerne in einem char* zwischenspeichern bzw. den dateiinhalt erstmal programm intern zwischenspeichern.

    Ich bekomme die datei geöffnet und auch direkt in der konsole ausgegeben, aber das zwischenspeichern in meiner char* buffer variablen funzt nicht.

    was mach ich falsch

    #include "stdafx.h"
    #include <fstream>
    #include <iostream>
    
    int _tmain(int argc, _TCHAR* argv[])
    {
    	std::ifstream input;
    	char* buffer = '\0';
    
    	input.open("C:\\temp\\s.txt", std::ios::binary);
    
    	if(!input.is_open())
    	{
    		std::cout<<"Datei nicht geöffnet"<<std::endl;
    		int a;
    		std::cin>>a;
    		return 1;
    	}
    
    	while (input.good() && !input.eof())
    	{
    		buffer = (char*) input.get();
    	}
    
    	std::cout<<buffer;
    
    	input.close();
    
    	int b;
    	std::cout<<"Ende";
    	std::cin>>b;
    
    	return 0;
    }
    


  • Warum char* ??? *kotz*



  • Hallo zusammen,

    vlt. hilft dir folgendes Beispiel ein wenig weiter

    #include <iostream>
    #include <fstream>
    #include <iterator>
    #include <algorithm>
    using namespace std;
    
    int main()
    {
      ifstream is("d.dat");
      is.unsetf(ios_base::skipws);
    
      // Zeichenanzahl bestimmen
      is.seekg(0, ios_base::end);
      int l = is.tellg();
      is.seekg(0, ios_base::beg);
    
      // Streaminhalt in Array kopieren und ausgeben
      char *buf = new char[l+1];
      copy(istream_iterator<char>(is), istream_iterator<char>(), buf);
      cout << buf;
    }
    

    Grüße
    Martin


Anmelden zum Antworten