С++ - ifstream не любит относительные пути

У меня возникли проблемы с открытием файлов с помощью ifstream

if I do:

ifstream myfile;
    myfile.open("C:/Users/build/windows/Debug/map1.xml");

он отлично работает, но если я делаю относительный путь (исполняемый файл находится в Debug/)

ifstream myfile;
    myfile.open("map1.xml");

Он не найдет файл. Любая помощь? Я пропустил что-то глупое?


person will    schedule 21.06.2012    source источник
comment
Откуда вы запускаете приложение?   -  person cklab    schedule 21.06.2012
comment
Есть большая вероятность, что рабочий каталог приложения не тот, в котором находится map1.xml.   -  person Timo Geusch    schedule 21.06.2012
comment
запустить его в визуальной студии, но у меня будет тот же результат, если я перейду к папке Debug/ и дважды щелкну исполняемый файл   -  person will    schedule 21.06.2012
comment
VS2013 теперь учитывает идею относительных путей при использовании ifstream и отладке.   -  person David    schedule 19.02.2014


Ответы (1)


Скорее всего, ваша IDE изменяет рабочий каталог вашей программы при ее запуске. Попробуйте поставить map1.xml в c:\users\build\windows

person Community    schedule 21.06.2012
comment
вздох, я думаю, исполняемый файл не обновлялся, когда я всегда останавливался в отладчике или что-то в этом роде, теперь, если я просто соберу и запущу его из каталога отладки (дважды щелкнув его в проводнике Windows), все будет работать: / Любая настройка, которую я могу изменить, чтобы визуальная студия запускала его из каталога отладки / во время отладки и т. д.? - person will; 21.06.2012
comment
нвм, нашел. Позор, я не могу автоматизировать это изменение с помощью cmake, так как это то, что я использую для создания файла проекта VS:/ - person will; 21.06.2012
comment
@will Если вы запустите VS из этого каталога, не будет ли он рабочим каталогом при выполнении вашей программы? Если это так, создайте пакетный файл (или ссылку?) и установите текущий каталог в C:/Users/build/windows/Debug - person Mark; 09.08.2012