Ich habe mir das gerade nochmal durchgelesen. Mein Eindruck jetzt ist, dass du einfach das Programm von Ort X aus starten willst aber im Programm für die relativen Pfadangaben von Y ausgehen willst.
Dafür gibt es wohl 2 Lösungsansätze, die ohne verschieben auskommen:
1) Du startest das ganze über einen shellscript:
Win: "start.bat"
|
Bash
|
1
2
|
cd N:\Pfad\zur\exe
dateiname.exe
|
POSIX "start.sh"
|
Bash
|
1
2
3
|
#!/bin/sh
cd /pfad/zur/exe/
./dateiname
|
2) Du berücksichtigst den Pfad:
|
C/C++ Quellcode
|
1
2
3
|
std::ifstream in("dateiname");
//wird zu
std::ifstream in(std::string(argv[0]) + "dateiname");
|
Wenn ich dich da falsch verstanden habe bitte ignorieren, dann nehm den Ansatz von Donasa (kopieren geht mit ISO-C++, für das Löschen musst du auf API-Funktionen zurückgreifen

)
EDIT://
Für den 2. Fall musst du noch den Teil von argv[0] nach dem letzten (back)slash entfernen.