Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Ścieżka względna do pliku otwieranego przez program c++

Ostatnio zmodyfikowano 2021-06-03 09:46
Autor Wiadomość
Temat założony przez niniejszego użytkownika
Ścieżka względna do pliku otwieranego przez program c++
» 2021-06-03 00:29:50
Dobry wieczór wszystkim.
Problem chyba trywialny, ale od 2 godzin nie pozwala mi zasnąć
C/C++
plik.open( "implementation\\graf.txt", std::ios::in );
Dlaczego to nie działa?
Program się kompiluje, ale flaga
C/C++
plik.good()
ustawia się na wartość false.
poprawność ścieżki sprawdziłem milion razy, a jeśli plik skopiuję do folderu w którym znajduje się aplikacja .exe i zmienię ścieżkę na po prostu graf.txt, to wszystko działa
P-178695
» 2021-06-03 07:26:17
rozumiem, że "implementation" jest katalogiem, folderem

w linux/unix
plik.open( "./implementation/plik.txt", ios::in | ios::out );


w windows pewnie tak do sprawdzenia
(możliwe że trzeba zastosować podwójne backslash'e)
plik.open( ".\implementation\plik.txt", ios::in | ios::out );
P-178696
» 2021-06-03 09:43:51
Ścieżka pod Windowsem powinna być zapisana tak jak napisał 13Antoni tj. "implementation\\graf.txt" (dwa backslashe). Windows i Linux natomiast radzi sobie dobrze ze ścieżką "implementation/graf.txt" i w sumie ten drugi zapis polecam, ponieważ jest bardziej uniwersalny.

Natomiast jeżeli chodzi o Twój problem, to prawdopodobnie program nie działa Ci zgodnie z oczekiwaniami, jeżeli uruchamiasz go z poziomu IDU (np. Visual Studio), natomiast działa poprawnie, gdy uruchamiasz bezpośrednio plikiem EXE. Powód tego jest prosty tj. domyślny katalog roboczy jest inny, niż zakładasz.

Jeżeli używasz Visual Studio to wystarczy:
- wejść w opcje projektu (prawy klawisz na projekcie i z menu kontekstowego wybierasz Properties)
- następnie na drzewku po lewej wybierasz "Configuration Properties" / "Debugging"
- w polu "Working Directory" zamieniasz zapis "$(ProjectDir)" na "$(OutDir)".

Efekt: Visual Studio w momencie uruchamiania programu będzie ustawiał katalog roboczy na katalog, w którym wygenerował plik EXE, a nie na katalog, w którym masz plik z projektem.
P-178697
« 1 »
  Strona 1 z 1