0 votos

std::fstream y OSX - ¿Por qué no puedo cargar un archivo con mi ejecutable en bruto?

Tengo un proyecto C++ en XCode que utiliza std::fstream para trabajar con un archivo de texto por defecto.

No he especificado una ruta relativa, así que supongo que el archivo tendrá que ser colocado en el mismo directorio que el ejecutable (como en Windows). Este sería mi método preferido por ahora también.

La parte complicada es que cuando ejecuto el proyecto desde Xcode, obtengo el comportamiento que espero: el archivo de texto se carga y se lee. Sin embargo, si ejecuto el ejecutable desde el finder, no obtengo nada (¡buenos días, señor!).

The text file lives in the same directory.

Este es el directorio señalado por Xcode en "Productos" que me lleva al ejecutable.

¿Alguien ha experimentado este comportamiento antes o sabe por qué puede estar ocurriendo?

3voto

Steve Evans Puntos 155

Su ejecutable está buscando en el current working directory ( CWD ).

  • Cuando se ejecuta desde Xcode, éste cambia activamente el directorio de trabajo actual al lugar donde se ha construido el ejecutable.

  • Cuando se ejecuta desde el Finder en MacOS, el directorio de trabajo actual no será el directorio de su ejecutable. Por lo tanto, el ejecutable no puede encontrar el archivo de texto.

Utilice el getcwd o std::filesystem::current_path para determinar el directorio de trabajo actual desde su ejecutable. Véase Obtener la ruta del ejecutable para saber cómo obtener la ruta de su ejecutable en tiempo de ejecución.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X