Zeiger frage bei ofstream
-
Hey,
wollte fragen wo ich das definiere auf welche datei mein Zeiger zeigt!void ofstream::open(const char *pFName, ios::openmode mode=ios::out);Kann ich den einfach in meiner klasse definieren oder wie läuft das? Ich mein der muss doch wissen welches Verzeichnis ich mein!?
LG Enno
EDIT: Ach so die Zeile habe ich von hier: http://www.cpp-tutor.de/cpp/le04/dateien.html
Dateizugriffe --> Ausgabestream-Objekt definieren
-
ich verstehe die frage nicht ganz.
pFName = C-string containing the name of the file to be opened.beantwortet das deine frage?
-
Ich glaub ich hab es grade selbst gelöst und zwar das ich mir das oben so definiere:
#ifdef LINUX #define PROC_THREADS "/proc/fs/nfsd/threads" #endifund in der Funktion so anwende:
#ifdef LINUX WRITEPROC(threads,PROC_THREADS); #endif }
-
Enno schrieb:
Ich glaub ich hab es grade selbst gelöst und zwar das ich mir das oben so definiere:
#ifdef LINUX #define PROC_THREADS "/proc/fs/nfsd/threads" #endifund in der Funktion so anwende:
#ifdef LINUX WRITEPROC(threads,PROC_THREADS); #endif }Jo, klar. Der Zusammenhang zum oben Stehenden erschließt sich einem auch gleich.

Du bist blurry333, oder?
-
Nein bin ich nicht!
Vllcht verstehste nu was ich mein (ist aber irgendwo noch ein Dreher drin ...):
#ifdef LINUX #define PROC_THREADS "/proc/net/dev" #endif #include "sysinfo.h" //#ifdef POSIX namespace exsystem { int SYSInfo::getTotalram(){ return Totalram; } #ifdef LINUX template <class TP> void WRITEPROC (TP cmd, const char *path){ std::ofstream procfile; procfile.open(path); procfile << cmd; procfile.close(); } #endif void SYSInfo::setDev(const char dev){ Dev=dev; #ifdef LINUX WRITEPROC(dev,PROC_THREADS); #endif } int *SYSInfo::getDev(){ return Dev; }
-
Enno schrieb:
Nein bin ich nicht!
Du bist irgendwo eingestellt worden/Praktikant, hast zu Anfang eine einfache Testaufgabe bekommen, bei der es darum geht, irgendwelche Statistiken zur Netzwerknutzung unter Linux zu erfassen und bist hoffnungslos überfordert, weil du in deiner Bewerbung maßlos mit deinen Fähigkeiten übertrieben hast. Komme ich der Wahrheit nahe?
-
Warum auch immer Dev nun nicht definiert ist -.-
fehlermeldung:
Fehler: »Dev« wurde in diesem Gültigkeitsbereich nicht definiert make[2]: *** [src/CMakeFiles/exsystem.dir/sysinfo.cpp.o] Fehler 1sysinfo.h:
#include <iostream> #ifndef SYSINFO_H #define SYSINFO_H namespace exsystem { class SYSInfo { public: int getTotalram(); void setDev(const char dev); const char *getDev(); private: std::string Dev;sysinfo.cpp:
#include <cstdio> #include <unistd.h> #include <sys/types.h> #include <sys/reboot.h> #include <sys/sysinfo.h> #include <sys/utsname.h> #include <fstream> #include <string> #ifdef LINUX #define PROC_THREADS "/proc/net/dev" #endif #include "sysinfo.h" //#ifdef POSIX namespace exsystem { int SYSInfo::getTotalram(){ return Totalram; } #ifdef LINUX template <class TP> void WRITEPROC (TP cmd, const char *path){ std::ofstream procfile; procfile.open(path); procfile << cmd; procfile.close(); } #endif void SYSInfo::setDev(const char dev){ Dev=dev; #ifdef LINUX WRITEPROC(dev,PROC_THREADS); #endif } const char SYSInfo::*getDev(){ return Dev.c_str; }und die main.cpp:
#include "../sysinfo.h" int main(){ exsystem::SYSInfo a; std::cout << "Ram: " << a.getTotalram() << std::endl; std::cout << "Update Networkstat: " << a.getDev() << std::endl; std::cout << "System name: " << a.getSysname() << std::endl; std::cout << "Release: " << a.getRelease() << std::endl; std::cout << "Nodename: " << a.getNodename() << std::endl; std::cout << "Maschine: " << a.getMaschine() << std::endl; return 0; }Ich werd bestimmt eh wieder halb gekillt aber fragen kostet halt nichts
wer nicht versucht der nicht gewinnt! Ich lerne aus allen Fehlern! Sry wenn ich zu doof bin!
-
SeppJ schrieb:
Enno schrieb:
Nein bin ich nicht!
Du bist irgendwo eingestellt worden/Praktikant, hast zu Anfang eine einfache Testaufgabe bekommen, bei der es darum geht, irgendwelche Statistiken zur Netzwerknutzung unter Linux zu erfassen und bist hoffnungslos überfordert, weil du in deiner Bewerbung maßlos mit deinen Fähigkeiten übertrieben hast. Komme ich der Wahrheit nahe?
Habe nicht übertrieben und die wissen das ich nichts weiß also liegst du falsch. Allerdings bin ich wohl mit der Aufgabe überfordert. Obwohl ich schon viel gelernt hab! Merkt man wohl hier nicht so

-
Hey,
Fehlerzeile angeben.
Deine '*' scheinen zufällig verteilt zu werdenvoid SYSInfo::setDev(const char dev) // hier fehlts wohl const char SYSInfo::*getDev() // hier ist es an der falschen Stelle
-
Oh ja das kann sein! Kann das grade nur nicht testen

Fehler Zeile ist Zeile 43 in sysinfo.cpp.
LG Enno