Textausgabe



  • Hi, ich finde immer nur wie man aus einer Datei etwas mit getline ausliest;
    ich habe aber schon eine Datei mit Text, will den jetzt ausgeben, bekommt aber immer nur das erste Wort.

    #include <iostream>
    #include <string>
    #include <fstream>
    
    int main()
    {
        char *ausgabe;
        ifstream out("test.txt");
         {
              out >> ausgabe;
          }
    
    cout << ausgabe;
    

    jo wie gesagt, gibt nur das erste Wort aus, wie benutze ich getline hier richtig?



  • oh oh oh! Dein Programm enthält ja viele Fehler bzw. merkwürdigkeiten

    Du hast für ausgabe gar keinen Speicher reserviert! So geht das nicht! Sei froh, dass dein Programm keinen Absturz gemacht hat.

    Du hast vergessen, dass ifstream und cout im namespace std liegt

    warum öffnest du zwischen drin einen neuen Scope?

    getline gibt es in 2 Ausführungen, einmal als Member und einmal als externe Funktion für std::basic_string

    hier einmal die std::basic_string version

    #include <iostream>
    #include <string>
    #include <fstream>
    
    int main() {
      std::ifstream in("foo");
      std::string gelesen;
      std::getline(in,gelesen);
      std::cout << gelesen << std::endl;
    }
    

    hier einmal die Member Funktion

    #include <iostream>
    #include <fstream>
    
    int main() {
      std::ifstream in("foo");
      char gelesen[100];
      in.getline(gelesen,100);
      std::cout << gelesen << std::endl;
    }
    


  • Das liest aber auch nicht den ganzen text ein, sondern nur eine ganze zeile )-:



  • #include <iostream>
    #include <string>
    #include <fstream>
    
    using namespace std;
    
    int main()
    {
      string print; 
      ifstream in("test.txt");
      while(!in.eof()) {
      getline(in, string print);
      cout << print;
      }
    }
    


  • das "string" in getline(in, print) muss natürlich da raus, tippfehler von mir.



  • mimoser schrieb:

    Das liest aber auch nicht den ganzen text ein, sondern nur eine ganze zeile )-:

    so viel können solltest du schon besitzen um das hinzubekommen. Ansonsten lohnt sich auch keine Hilfe, da dir einfach die Grundlagen fehlen



  • Hallo,

    so kannst Du die Datei in einen Buffer kopieren:

    #include <fstream>
    #include <iterator>
    #include <fstream>
    #include <algorithm>
    #include <iostream>
    
    using namespace std;
    
    int main()
    
    {
    
    	fstream file("t:\\test.txt",ios::binary|ios::in);
    
    	file.seekg(0,ios::end);
    	unsigned long size = streamoff(file.tellg());
    	file.seekg(0,ios::beg);
    
    	char * buffer = new char[size+1];
    
    	istreambuf_iterator<char> begin(file);
    	istreambuf_iterator<char> end;
    
    	copy(begin,end,buffer);
    	buffer[size] = '\0';
    	cout<<buffer;
    	delete[] buffer;
    }
    


  • Oh je. Wenn schon binär und so komplex, dann bitte immerhin mit std::vector - und da dann mit read() mit einem Happs alles reinlesen.


Anmelden zum Antworten