Buch über C++

OP #1529905
Lesenswert?

Hallo Leute,

Ich bin auf der Suche nach einem Buch über C++ worin mehr beschrieben 
steht wie ich auf Daten auf meinem PC zugreifen kann. Also auch 
Festplatte, externe Festplatte und nicht nur auf Dateien in dem Ordner 
auf dem PC wo auch die .exe liegt. Ich will quasi überall drauf 
zugreifen können. Was ich nicht suche sind solche Bücher, die die 
Grundlagen über C/C++ erklären. Zum einen habe ich so ein Buch, zum 
anderen gibts dazu genügend Tutorials im Internet. Ich hoffe ihr wisst 
was ich meine. Danke für die Hilfen! :)
Gast #1529920
Lesenswert?

Das hat nichts mit C++ zu tun. C++ kennt i/ostreams, fertig.

Damit kann man auf das 'Dateisystem' zugreifen; für Unix heißt das 
entsprechend: Auf CDs, Geräte, Festplatten, FTP-Verzeichnisse, Windows 
Freigaben, NFS-Laufwerke und so weiter, weil alle diese Dinge ins 
Dateisystem eingehangen werden können.

KDE stellt eine weitere quasitransparente Schicht zur Verfügung 
(kio-Plugins) und treibt das Spiel noch weiter auf HTTP, 
ICQ(Oscar)-Übertragungen, Digitalkameras etc.
#1529922
Lesenswert?

L. J. schrieb:

> Ich bin auf der Suche nach einem Buch über C++ worin mehr beschrieben
> steht wie ich auf Daten auf meinem PC zugreifen kann. Also auch
> Festplatte, externe Festplatte und nicht nur auf Dateien in dem Ordner
> auf dem PC wo auch die .exe liegt.

Indem man bei der Angabe des Dateinamens auch immer den Pfad mit dazu 
gibt, kann man auf alles zugreifen, was sich im Dateibaum des 
Betriebssystems abbilden lässt. Wenn dein OS es schafft einen entfernten 
FTP-Server als Directory-Node in den Dateibaum einzubinden, kannst du 
natürlich dann auch mit der Angabe des Directory-Pfades auf diesen 
entfernten FTP-Server zugreifen und das darunterliegende OS kümmert sich 
um den Transport der Daten von/zum Server.

Wo liegt also das Problem?
Dass du nicht weißt, wie man auf deinem OS eine Pfadangabe formuliert?
OP #1529933
Lesenswert?

Na wenn es nur das ist. Die Sache war die. Ich hatte es schonmal 
versucht. Ich hatte eine datei einfach auf der Festplatte gespeichert 
und ich konnte sie einfach nicht finden, trotz Pfadangabe. Aber 
vielleicht habe ich da auch was falsch gemacht. Ich dachte man bräuchte 
dafür bestimmte Libraries oder ähnliches.
#1529937
Lesenswert?

L. J. schrieb:
> Na wenn es nur das ist. Die Sache war die. Ich hatte es schonmal
> versucht. Ich hatte eine datei einfach auf der Festplatte gespeichert
> und ich konnte sie einfach nicht finden, trotz Pfadangabe. Aber
> vielleicht habe ich da auch was falsch gemacht. Ich dachte man bräuchte
> dafür bestimmte Libraries oder ähnliches.

Windows?

Ich wette du hast vergessen, dass ein \ in einem String als \\ 
geschrieben werden muss.

Die Datei test.txt im Verzeichnis temp, welches auf der Platte C direkt 
unter dem Wurzelverzeichnis liegt, hat unter Windows den vollständigen 
Namen in Form eines C-Strings

   "C:\\temp\\test.txt"

(Dies deshalb, weil \ in C und auch in C++ eine Sonderrolle hat.
\n  bezeichnet den Line Feed Character
\t  bezeichnet den Tabulator Character
\b  bezeichnet den Backspace Character
\\  schliesslich bezeichnet den \ Character )

Kann natürlich auch sein, dass die Datei gar nicht geschrieben wurde :-)
#1529939
Lesenswert?

@L.J.: nee.

Aber erstens gibt man das nicht so an: "C:\temp\a.txt", sondern
"C:\\temp\\a.txt" oder "C:/temp/a.txt".

Zweitens bekommt auf vernünftige Fragen auch leichter vernünftige
Antworten, ohne erst 20 Leute ins Leere laufen zu lassen.
So in der Art: Das habe ich versucht... und es klappt nicht weil...
Persönliche Seite #1529942
Lesenswert?

Klaus Wachtler schrieb:
> @L.J.: nee.
>
> Aber erstens gibt man das nicht so an: "C:\temp\a.txt", sondern
> "C:\\temp\\a.txt" oder "C:/temp/a.txt".

So ist es. Weil Der Backslash ein Escape Zeichen ist. Wenn man aber 
tatsächlichen einen Backslash als Zeichen schreiben will, muss man die 
Escape Sequenz \\ (zwei Backslashes hintereinander verwenden). Das 
kannst du auch in deinem C Buch nachschauen.

Und du bist dir auch ganz sicher, dass in deinem C Buch kein einziges 
Beispiel mit absoluter Pfadangabe drin ist?
OP #1529943
Lesenswert?

Ja tut mir Leid. Ich bin heute eh was im Stress. Deswegen auch nochmal 
ein Sorry dafür das ich hier bei Mikrocontroller und Elektronik 
reingeschrieben habe und nicht in PC-Programmierung. Ich bin heute etwas 
durch den Wind. Aber danke für die Hilfen ich werde es nachher mal 
versuchen, denn ich denke ich habe den Fehler schon gefunden :)
OP #1530010
Lesenswert?

Nun ja, leider klappt es doch nicht so richtig. Ich habe jetzt eine 
Datei mit dem Namen test.txt erstellt. Sie liegt auf der Festplatte in 
dem Ordner temp. Also ist der Pfad ja C:\temp\test.txt. Ich habe es mit 
diesem Code versucht:
1
#include <iostream>
2
#include <fstream>
3
using namespace std;
4

5
int main(void)
6
{
7
    char c;
8
    ifstream Zieldatei;
9
    Zieldatei.open("C:/temp/test.txt",ios_base::in);
10
    if(!Zieldatei)
11
    {
12
       cerr<<"Zieldatei konnte nicht geöffnet werden!\n";
13
    }
14
    while(Zieldatei.get(c))
15
    {
16
       cout<<c;
17
    }
18
    cin.get();
19
}
Es kommt jedes mal der Error: Zieldatei konnte nicht geöffnet werden!
Ich weiß nicht mehr, was ich noch ändern soll.
Gast #1530021
Lesenswert?

Hast du diesen 'Dateiendungen-ausblenden'-Blödsinn eingeschaltet? Dann 
würde nämlich die Datei 'test.txt.txt' heißen..

Ansonsten öffne die Datei mit fopen() und lass dir mit strerror() ne 
anständige Fehlermeldung ausgeben.
Gast #1530146
Lesenswert?

Es würde auch schon genügen, wenn Microsoft endlich diese hirnverbrannte 
Funktion standardmäßig abstellen würde.
Ich kann mich noch dran erinnern, da hat Outlook standardmäßig 
ausführbare (exe, com) EMail-Anhänge automatisch gestartet.
Gast #1530317
Lesenswert?

@L. J. (luke1)
Du hast doch schon ein paar Hinweise in dem ursprünglichen Thread 
bekommen. Das erste was mir da oben uffällt, ist das
1
ifstream Zieldatei;
 nur für das Lesen funktioniert, für das Schreiben muss es
1
ofstream Zieldatei;
 sein. Das stand imho auch in dem anderen Thread.

Irgendwas wie folgendes suchst du (vermutlich):
1
#include <iomanip>
2
#include <iostream>
3
#include <fstream>
4

5
using namespace std;
6

7
int main ( int argc, char* argv[] ){
8
  ifstream srcFile;
9
  ofstream dstFile;
10
  char line[128];
11

12
  srcFile.open("Datei_1.txt", ios_base::in);
13
  dstFile.open("Datei_2.txt", ios_base::out);
14
  
15
  if(!srcFile) {
16
    cerr << "srcFile konnte nicht geöffnet werden\n";
17
  }
18
  if(!dstFile) {
19
    cerr << "dstFile konnte nicht geoeffnet werden\n";
20
  }
21

22
  while(srcFile.getline(line,sizeof(line))) {
23
    cout << "Line = " << line << endl;
24
    dstFile << line << endl;
25
  }
26

27
  cout << "Irgendeine Taste druecken!" << endl;
28
  cin.clear();
29
  //cin.ignore(256, '\n');
30
  cin.get();
31

32
  srcFile.close();
33
  dstFile.close();
34

35
  return 0;
36
}

Sven P. schrieb:
> Ich kann mich noch dran erinnern, da hat Outlook standardmäßig
> ausführbare (exe, com) EMail-Anhänge automatisch gestartet.
Und bei aktuellen Versionen kam ein Kommilitone nicht mehr an 
'gefährlichen' Dateien ran. Seinen Aussagen nach, konnte er sie weder 
speichern, kopieren oder sonst irgendwas. ;-)
Gast #1530332
Lesenswert?

> > Ich kann mich noch dran erinnern, da hat Outlook standardmäßig
> > ausführbare (exe, com) EMail-Anhänge automatisch gestartet.
> Und bei aktuellen Versionen kam ein Kommilitone nicht mehr an
> 'gefährlichen' Dateien ran. Seinen Aussagen nach, konnte er sie weder
> speichern, kopieren oder sonst irgendwas. ;-)
ihr solltet euch wirklich mal den mit Programmen beschäftigen über die 
ihr lästert.
Ja bei Outlook2000 konnte man die Anhänge direkt starten, aber geht das 
nicht bei jedem email Programm?. Nachdem sich die genug Leute alles 
gestartet habe was bei ihnen angekommen ist mussste etwas unternommen 
werden. Mit einen ServicePack wurden dann die Anhänge in Gruppen 
eingesteilt( Level1 und Level2 ). Bei Level1 wurde komplett versteckt, 
Level2 durfte man nur speichern. Und es hat geholfen der Leie hat 
erstmal keinen Virus mehr direkt gestartet - er öffnet jetzt die Zip 
datei und startet den Virus dort raus.
Aber den Verhalten von Outlook war jederzeit konfigurierbar (in der 
Registry) für Faule gab es auch kostenlose Tool die das übernommen 
haben. Ich fand die Lösung zwar auch nicht perfekt aber sie haben halt 
etwas unternommen.
In Kombination mit Exchange konnte die diese Richtline auch Zentral 
verwalten.
Ich bin mit Outlook sehr zufrienden, keine Ahnung was die Leute immer 
daran zu nörgeln haben. Ich darf jetzt auch Arbeit mit Notes arbeiten - 
da sieht man estmal was wirklich schlecht ist.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren