Kommt nur murks raus
-
Enno schrieb:
Erstmal vielen Dank für deine Geduld und natürlich lese ich alles und probiere rum!
Nicht probieren! Probieren ist was für den Hosenkauf. Beim Programmieren ist wichtig zu wissen, was man tut. Code ist Logik pur, du musst von jedem Zeichen in deinem Programm wissen, was es bedeutet und warum du es gesetzt hast. Kauf dir ein Buch! Mit ein paar Tagen Lernen hättest du das Problem schon längst gelöst, so einfach ist das. Stattdessen fragst du hier schon seit Anfang September immer wieder die gleiche Frage und hast dabei gefühlt noch keine einzige Antwort so richtig verstanden.
-
Enno schau mal in deine Emails ich hab dir gerade eine Email geschrieben.
So wäre es richtig:
#include <iostream> #include <fstream> using namespace std; string Data; // Globale Variable ist hier überall gültig void getDev(std::string filename) { std::ifstream file(filename.c_str()); 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; }Oder so mit Referenz geht auch:
#include <iostream> #include <fstream> using namespace std; void getDev(std::string filename, string &Data) { std::ifstream file(filename.c_str()); 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[]) { string Data; // Lokale Variable welche nur im int main() scope gültig ist getDev("test.txt", Data ); cout<<&Data[0]<<endl; //Geht auch so: cout<<Data<<endl; return 0; }Google mal nach Begriff Scope im Zusammenhang mit C++.
Hier steht auch was dazu: http://msdn.microsoft.com/en-us/library/b7kfh662(v=vs.80).aspx ( Linux, MAC, Window Betriebssystem unabhängig )
-
Ich versteh es nicht ... jetzt hab ich das alles genau so ... er gibt mir auch kein fehler nur wenn ich es ausführe kommt nichts ....
naja ich les mal den primer
hab die e-mail jetzt auch bekommen
-
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!