int chdir(sDirectory);
неверный синтаксис для вызова функции chdir
.Это объявление int
, называемое chdir
с недопустимым инициализатором строки (`sDirectory).
Чтобы вызвать функцию, вам просто нужно сделать:
chdir(sDirectory.c_str());
Обратите внимание, чтоchdir принимает const char*
, а не std::string
, поэтому вы должны использовать .c_str()
.
Если вы хотите сохранить возвращаемое значение, вы можете объявить целое число и использовать вызов chdir
для его инициализациино вы должны дать int
имя:
int chdir_return_value = chdir(sDirectory.c_str());
Наконец, обратите внимание, что в большинстве операционных систем текущий или рабочий каталог может быть установлен только для самого процесса и всех дочерних процессов, которые он создает.Это (почти) никогда не влияет на процесс, который порождал процесс, изменяя его текущий каталог.
Если вы ожидаете, что рабочий каталог вашей оболочки будет изменен после завершения вашей программы, вы, вероятно, будете разочарованы.