Domanda

sto sviluppando un prototipo di un gioco, e alcune regole di gioco devono essere definite in un file ini in modo che il game designer possono modificare i parametri di gioco senza la necessità di aiuto da parte mia, oltre a una ri-compilazione. Questo è quello che sto facendo attualmente:

std::ifstream stream;
stream.open("rules.ini");

if (!stream.is_open())
{
    throw new std::exception("Rule file could not be opened");
}

// read file contents here

stream.close();

Tuttavia, il mio flusso non si apre mai successo. Immersioni in profondità nella sorgente AWL durante il debug rivela che _getstream () (come definito nella stream.ce) continua a ritornare NULL, ma io proprio non riesco a capire perché questo è. Aiuto, chiunque?

:

Edit:. Rules.ini si trova nella stessa directory del file exe

È stato utile?

Soluzione

si stanno assumendo che il directory di lavoro è la directory che il vostro eseguibile risiede in. Questa è una cattiva ipotesi.

Il tuo eseguibile può essere eseguito da qualsiasi directory di lavoro, quindi di solito è una cattiva idea di hard-code percorsi relativi nel software.

Se si vuole essere in grado di accedere ai file relativi alla posizione del vostro eseguibile, è necessario innanzitutto determinare il percorso del file eseguibile e creare un percorso completo da questo.

È possibile ottenere il nome del vostro eseguibile esaminando il parametro argv[0] passato a main(). In alternativa, se siete su Windows, è possibile ottenere con GetModuleFileName() passando NULL come primo parametro.

Altri suggerimenti

è la portata del vostro flusso aperto corretto.

"rules.ini" non è un percorso completo per cui deve essere relativa in modo da che cosa è relativo al. Oppure avete bisogno di usare il percorso completo lì.

(ipotesi selvaggio qui) si sta utilizzando Visual Studio. Durante il debug, il programma sta andando a cercare la directory del progetto per "rules.ini"

Tuttavia, se si tenta di eseguire il programma da "myproject / debug / MYEXE.EXE", dovrebbe funzionare bene perché sta andando per la ricerca "/ debug" per rules.ini

Come il suo stata menzionata è necessario specificare il percorso completo a causa percorso relativo tende a portare ad errori

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top