Kommt nur murks raus



  • Entweder existiert bei dir die Datei test.txt nicht in dem Ordner wo dein Programm liegt oder in der Datei steht kein Text drin.

    Versuchs mal so:

    #include <iostream> 
    #include <fstream> 
    using namespace std;
    
    string Data;
    
    void getDev(std::string filename)
     {
            ifstream file(filename.c_str());
    
            if ( ! file.good() )
            {
                    cout<<"Die Datei "<<filename<<" existiert nicht"<<endl;
                    return ;
            }
    
        file.seekg(0,std::ios::end);
        long size = file.tellg();
    
        file.seekg(0,std::ios::beg);
        Data.resize(size + 1);
        file.read(&Data[0],size);
     }
    
    int main(int argc, char* argv[]) 
    { 
     getDev("test.txt"); 
     cout<<&Data[0]<<endl; //Geht auch so: cout<<Data<<endl; 
    
    return 0; 
    }
    


  • jawohl lag falsch und jetzt kam auch die message ... liegt nun richtig und klappt 🙂 du bist ein schatz^^
    ich werd nun den primer weiter lesen und da ich bis zum ende der woche zeit hab mich wohl dann melden ob es alles klappt.



  • Oh man, was für ein Gefrickel. Wenn Du mit dem Inhalt wirklich nur einen String füllen willst:

    #include <string>
    #include <iterator>
    #include <fstream>
    #include <istream>
    
    std::string get_dev(std::string const & file)
    {
        std::ifstream reader(file.c_str());
        std::istreambuf_iterator<char> i(reader);
        std::istreambuf_iterator<char> end;
        return std::string(i, end);
    }
    

    Benutzung: std::cout << get_dev("bla.dat") << '\n';



  • So ich hab es nun noch einmal anders gemacht ...

    Nur hab ich irgendwie ein linker Problem wenn ich das bei den gegoogelten Sachen richtig gelesen haben!
    Hab aber nichts für die Lösung gefunden!

    #include <iostream>
    
    #ifndef SYSINFO_H
    #define SYSINFO_H
    
    namespace exsystem {
    class SYSInfo {
    public:
      const char *getDev();
    
    #include <fstream>
    #include <string>
    #include <iostream>
    
    #include "sysinfo.h"
    
    //#ifdef POSIX
    
    using namespace exsystem;
    
    const char *getDev(){
      std::string line;
      std::ifstream read("test.txt");
      if (read.is_open()){
    
        while (getline(read, line)){
          std::cout << line << std::endl;
        }
        read.close();
      }
    
      else std::cout << "Unable to read file" << std::endl; 
    }
    
    #include <iostream>
    
    #include "../sysinfo.h"
    
    int main (){
      exsystem::SYSInfo a;
      std::cout << "Net: " << a.getDev() << std::endl;
    }
    

    Fehler:

    sysinfo.cpp:(.text+0x1d): undefined reference to `exsystem::SYSInfo::getDev()'
    collect2: ld gab 1 als Ende-Status zurück
    


  • Was machst du denn da schon wieder. ^^ --> const char *getDev() 😮

    Tachyon hat doch eine saubere Lösung bereits für dich gebaut.

    Du musst doch nur die Funktion von Tachyon in deine Klasse einbauen.
    Naja und ab besten noch prüfen ob die Datei auch wirklich existiert und on diese ausgelesen werden konnte.

    Schreib mal in deinem Code:

    std::string exsystem :: SYSInfo :: get_dev(std::string const & file)
    {
        std::ifstream reader(file.c_str());
        std::istreambuf_iterator<char> i(reader);
        std::istreambuf_iterator<char> end;
        return std::string(i, end);
    }
    

    Wenn es funktioniert dann kannste ja noch die Abfragen einbauen.

    Minimier die Sacheb mal aufs minimalste schreib z.b. erst eine Klasse ohne den Namespace Kram und versuch es dadrin zum laufen zu bekommen. Ich glaub das wäre für dich erstmal etwas leichter. Danach kannste ja die Namespace Sachen einbauen



  • Er compiliert das wunderbar^^ wie bei meinem kram auch!

    Nur mir scheint irgendwie eine Lib abhanden gekommen zu sein oder so ?!

    hab es so eingefügt und tada:

    undefined reference to `exsystem::SYSInfo::getDev()'
    collect2: ld gab 1 als Ende-Status zurück
    


  • Enno, warum gibt getDev() nichts zurück? Und wenn sie eine Memberfunktion von SYSInfo ist, dann musst du das bei der Definition auch angeben.



  • Wow 😃 haha endlich klappt es!

    Sogar beide varianten xD und da das hier mit dem const char * hier vorgegeben ist lass ich die stehen =).
    Problem war das #include <fstream> in der Main gefehlt hat und das bei dem was ich oben gepostet hab das SYSInfo:: fehlte!

    Vielen danke für die ganze geduldige Hilfe nun hab ich es alles auch verstanden! ❤



  • Enno schrieb:

    Vielen danke für die ganze geduldige Hilfe nun hab ich es alles auch verstanden! ❤

    Das glaub ich dir nicht. 😃



  • Frag mich was zu meinem Code ich kann es alles erklären!



  • Warum schreibst du:

    const char *getDev()
    

    und nicht

    std::string getDev();
    

    Warum lässt du keine Wert zurückgeben?



  • Ich wurde beauftragt das mit const char zu machen und ja ist hier bissl unlogisch da ich auf nichts zeige was ich dann zurück gebe^^ aber das kommt noch drum hab ich das so gemacht.^^
    Sry ich hab nicht mein ganzes Projekt verraten. 😃 Es läuft jetzt so das ich die Infos aus /proc/net/dev parsen soll und diese dann verarbeiten muss so das ich z.B. ausspucken kann wie viele Pakete geschickt wurden! Falls du das verstehst. 😃 Ich hab ja manchmal ausdrucks Problem und keiner weiß was ich mein! 😛



  • Enno schrieb:

    Sry ich hab nicht mein ganzes Projekt verraten. 😃

    Versteh mich bitte nicht falsch, aber dafür sind wir dir sogar dankbar.



  • Enno schrieb:

    Sry ich hab nicht mein ganzes Projekt verraten. 😃 Es läuft jetzt so das ich die Infos aus /proc/net/dev parsen soll und diese dann verarbeiten muss ...

    Na, dann wird das hier ja noch zur unendlichen Geschichte ...



  • Belli schrieb:

    Na, dann wird das hier ja noch zur unendlichen Geschichte ...

    ist es doch schon. Die Sache mit const char* haben wir in einem anderen Thread schon ausführlich durchgekaut



  • Ja, ich versteh es.^^

    Enno schrieb:

    Ich wurde beauftragt das mit const char

    Aber ich muss schon sagen eure Firma scheint echt lustig zu sein. 😃

    Enno schrieb:

    Sry ich hab nicht mein ganzes Projekt verraten.

    Was is daran so Schlimm? Umso mehr du uns sagst was du genau machen willst umso besser können wir dir doch helfen.

    Naja dann noch viel Spaß mit dem Projekt.^^



  • Haha eure antworten waren mir soooo klar 😃
    Ja ich habe noch viel zu lernen!
    Ja ich hab lust und will das auch!
    Ja ich habe mir den Beruf ausgesucht weil es mich interessiert!
    Ja ich bin dankbar für jede Hilfe!
    Ja ich stell mich oft dumm an!

    EDIT@ Bassmaster kannst mir gerne deine e-mail geben dann schick dir mal den ganzen code xD

    Bassmaster schrieb:

    Was is daran so Schlimm? Umso mehr du uns sagst was du genau machen willst umso besser können wir dir doch helfen.

    Zu viel Info ist manchmal nicht gut xD dann weiß nachher keiner mehr was ich will!



  • Enno schrieb:

    EDIT@ Bassmaster kannst mir gerne deine e-mail geben dann schick dir mal den ganzen code xD

    Danke für das Geschenk aber ich lehne mal dankend ab. 😃

    btw. meine Email Adresse hast du vielleicht noch ich hab dir doch gestern den Primer geschickt.^^ Über das Forum kann man auch jemandem dirkt eine Email schreiben. Aber nein ich möchte den Code nicht.^^



  • Bei dir ist keine e-mail eingetragen und kp hab geantwortet musst du schauen ob da was zurück gekommen ist! xD



  • Ja, ist angekommen.


Anmelden zum Antworten