Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Phil_GDM

Alter Hase

  • »Phil_GDM« ist der Autor dieses Themas

Beiträge: 443

Wohnort: Graz

Beruf: Student-Softwareentwicklung u. Wissensmanagement

  • Private Nachricht senden

1

23.02.2006, 19:44

[Solved]: ofstream dateipfad?

Man nehme an eine Applikation liegt in C:\Application, und mein Programm mach folgendes:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
wchar_t* const file_path = L"C:\Data\Files\file.cfg";
wchar_t* const new_file_path = L"new_file.cfg";  //auch mit .\\new_file.cfg probiert


void foo()
{
  std::wistream in_file(file_path);
  std::wostream out_file(new_file_path);

  ...

  wistream.close();
  wostream.close();

}


Soweit ich weiß, sollte ich jetzt im Ordner C:\Applicatoin die Datei new_file vorfinden oder?
Jedoch wird die Datei im Ordner C:\Data\File\ angelegt, weshalb?
Was muss ich manchen, damit die Datei im Ordner der Applikaton angelegt wird?

mfg Philipp

Steven77

Alter Hase

Beiträge: 515

Wohnort: Münster - Gievenbeach

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

2

23.02.2006, 20:30

Probier doch mal 'nen absoluten Zielpfad anzugeben, keinen relativen, indem Du das Verzeichnis der Anwendung ermittelst und dann den Dateinamen konkatenierst...
Keine Ahnung, ob das dann geht, ist aber meine Überlegung...

Anonymous

unregistriert

3

23.02.2006, 20:47

C-/C++-Quelltext

1
wchar_t* const file_path = L"C:\Data\Files\file.cfg";

Du hast da Escapesequenzen in Deinem Code, die würde ich als normales anständiges und vernünftiges Betriebssystem wie es ja Windows ist, auch nicht futtern.

Phil_GDM

Alter Hase

  • »Phil_GDM« ist der Autor dieses Themas

Beiträge: 443

Wohnort: Graz

Beruf: Student-Softwareentwicklung u. Wissensmanagement

  • Private Nachricht senden

4

23.02.2006, 23:17

Steffen77
Mit absoluten Pfaden funktioniert es, dass wusste ich aber schon ;).

nix_da
Keine Änderung


Es muss doch irgendeinen Grund haben, dass die Datei in diesem Fall in diesen Ordner angelegt wird.
Wenn es irgendwie möglich ist, möchte ich auf die Verwendung von absoluten Pfaden verzichten.

Es muss durch irgendeinen Grund für dieses seltsame Verhalten geben.

Übrigens: Einen der beiden Dateipfade bekomme ich durch ein GetOpenFileName, viell. hilft diese Info ja was.

mfg Philipp

grek40

Alter Hase

Beiträge: 1 491

Wohnort: Dresden

  • Private Nachricht senden

5

23.02.2006, 23:23

Quellcode

1
L"C:\\Data\\Files\\file.cfg"


Escapesequenzen immer schön escapen^^
Was sonst noch falsch ist weiß ich nicht...

Anonymous

unregistriert

6

23.02.2006, 23:28

btw:

c:/test/blabla/datei.txt

Phil_GDM

Alter Hase

  • »Phil_GDM« ist der Autor dieses Themas

Beiträge: 443

Wohnort: Graz

Beruf: Student-Softwareentwicklung u. Wissensmanagement

  • Private Nachricht senden

7

24.02.2006, 00:32

Versucht doch mal folgendes.

C-/C++-Quelltext

1
2
3
4
5
6
7
char cur_a[1024];
char cur_b[1024];

GetCurrentDirectoryA(1024, cur_a);
OPENFILENAME ofn = {...};
GetOpneFileName(&ofn);
GetCurrentDirectoryA(1024, cur_b);


Vielleicht werdet ihr dann genauso verwundert fesstellen wie ich, dass cur_a und cur_b nicht den gleichen Pfad haben (sofern mit GetOpenFileName(...) ein Verzeichnis ausgewählt wurde, welches nicht dem, der Anwendung entspricht). Ich musste also überrascht feststellen, dass GetOpenFilename das aktuelle Arbeitsverzeichnis der Applikation ändert. Wenn man im Internet sucht, kommt auch noch darauf, dass wenn man einen FileStream mit relativem Pfad erzeugt, dieser Relative Pfad einfach an das Arbeitsverzeichnis angehängt wird, lustig oder :wirbel:

Die Moral von der Geschicht, vertraue den Windows-Funktionen nicht ;)

mfg Philipp

Black-Panther

Alter Hase

Beiträge: 1 443

Wohnort: Innsbruck

  • Private Nachricht senden

8

24.02.2006, 17:18

Zitat von »"nix da"«

btw:

c:/test/blabla/datei.txt


Heißt das man kann Slashes statt Back-Slashes verwenden??
stillalive studios
Drone Swarm (32.000 Dronen gleichzeitig steuern!)
facebook, twitter

Anonymous

unregistriert

9

24.02.2006, 17:40

Black-Panther
Ja

Werbeanzeige