Wczytywanie danych z pliku, w innej lokalizacji nie dziala

0

No wlasnie. Jesli skompiluje to w folderze domyslnym dziala, pliki .txt znajduja sie w tym samym folderze. Jesli przeniose folder w inne miejsce program juz nie moze uzyskac dostepu do plikow .txt. W jaki sposob rozwiazac ten problem?
Do pliku odwoluje sie w ten sposob

plik.open(nazwa_pliku, ios::in | ios::out); 

czyli z tego, co mi wiadomo w momencie w ktorym nie podaje dokladnej lokalizacji - program szuka plikow w folderze, w ktorym sie znajduje (i samo ulokowanie folderu nie powinno miec znaczenia).

0

Jeśli chesz przemieszczać plik, daj {
a) pełną ("C:\costam\teksty\asdf.txt")
b) półpełną ("teksty\asdf.txt")
} ścieżkę

0

Niestety, polpelna nie dziala. Pelna byc nie moze, bo na kazdym komputerze moze byc inna.
Wywolanie w tym wypadku jest takie

 plik.open("Release\plik.txt", ios::in | ios::out);

Nie dziala, czyli program nie moze wczytac danych, teraz nawet przed przestawieniem folderu.

0

Zadna z powyzszych konfiguracji nie dziala.

 ".\Release\plik.txt"
 "\\Release\plik.txt"
 "\\Release\\plik.txt"

W ramach podsumowania. Kompiluje do wersji Release, otwieram folder Release, odpalam aplikacje i nie dziala. W folderze oczywiscie znajduje sie plik.txt. Gdy skompiluje w sposob:

"plik.txt" 

to zaczyna dzialac. Gdy usune plik.txt z folderu znowu nie czyta (co w sumie zrobilem aby potwierdzic na stowe, ze bierze pliki z odpowiedniego folderu).

0

Któryś z przykładów poniżej powinien pomóc, pobierasz ścieżkę swojej appki i doklejasz tą stałą

#include <windows.h>
#include <string>
#include <iostream>
using namespace std;;

string ExePath() {
    char buffer[MAX_PATH];
    GetModuleFileName( NULL, buffer, MAX_PATH );
    string::size_type pos = string( buffer ).find_last_of( "\\/" );
    return string( buffer ).substr( 0, pos);
}
#include <iostream>
#include <string>
#include <windows.h>

int main()
{
	const unsigned len = GetCurrentDirectory(0, 0);
	if (!len)
		return 1;
	std::string dir(len, '\0');
	if (!GetCurrentDirectory(len, &dir[0]))
		return 1;
	std::cout << dir << std::endl;
	return 0;
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1