Где Visual Studio ищет файлы txt при выполнении операций управления файлами?

Я знаю, что это вопрос новичков, но я работал с Python раньше, и когда вы хотели, например, просто получить доступ к файлу .txt, все, что вам нужно было сделать, это убедиться, что файл txt находится в том же каталоге. У меня есть следующий код C ++ ниже, но он не находит файл Numbers.txt, который я сохранил на своем рабочем столе. Все, что у меня есть в файле, - это одна строка чисел типа double. Все, что я хочу сделать, это найти среднее значение всех чисел в файле. Программа работает нормально, но вывод не печатается правильно. Проверив, что печатается на выходе, просто распечатав output [0], я обнаружил, что файл не копирует свое содержимое в массив. Может ли кто-нибудь решить эту небольшую проблему для меня или хотя бы указать мне правильное направление на хорошее руководство?

int main() {
    cout << "Getting File Information..." << endl;
    ifstream file;
    char output[100];
    //int x;

    file.open("Numbers.txt", ios::in);    // open file

    cout << "Opened File Successfully ****************" << endl;
    file >> output;              // empty file contents into output
    cout << output;              // print out contents of file
    cout << "Should have printed out results by now" << endl;
    //file >> x;

    file.close();

    return 0;
}

person Josh Bradley    schedule 18.09.2009    source источник


Ответы (4)


Visual Studio устанавливает рабочий каталог в YourProjectDirectory \ Debug \ Bin при работе в режиме отладки. Если ваш текстовый файл находится в YourProjectDirectory, вам необходимо учесть эту разницу.

Самый простой способ сделать это - включить ваши текстовые файлы в проект и установить для их действия сборки (в окне «Свойства») значение «Содержимое».

person Eric J.    schedule 18.09.2009
comment
Вы говорите о C # или VB.Net, а не о C ++ - person Cem Kalyoncu; 19.09.2009
comment
Возможно, ответ требует доработки, у меня тот же вопрос, но я не нашел подпапку \Bin в \Debug на VS2015. К счастью, второй способ все еще работает. - person Jaege; 28.01.2016

У меня была такая же проблема, и я не нашел ни одного из этих ответов на работу. Затем я вспомнил то, чему я давно научился в ООП. Что вам нужно сделать, так это взять этот текстовый файл на рабочем столе, найти папку проекта в ваших проектах Visual Studio в документах вашего компьютера и поместить текстовый файл в эту папку за пределами Visual Studio. Затем в Visual Studio в исходных файлах щелкните правой кнопкой мыши -> добавьте существующий элемент -> (ваш текстовый файл)

:)

Кстати, я наткнулся на эту ветку, потому что в этой ветке говорилось, что это хорошая идея, и я хотел, чтобы она была обновлена, чтобы люди искали в Google тот же вопрос. https://meta.stackexchange.com/questions/125965/is-bumping-old-questions-allowed

person J L    schedule 20.03.2013
comment
Это не имеет никакого отношения к ООП. - person Lightness Races in Orbit; 29.09.2016
comment
Произойдет сбой и сгорит, когда приложение перейдет в рабочую среду. - person nicomp; 26.09.2017

Если вы говорите о запуске кода в отладчике Visual Studio с помощью F5 или «Отладка / Начать отладку», вы можете установить рабочий каталог своей программы с помощью Project / ‹Имя проекта› Свойства / Конфигурация / Отладка / Рабочий каталог.

Поместите текстовый файл где-нибудь в каталог и установите Рабочий каталог так, чтобы он указывал на этот каталог.

person RichieHindle    schedule 18.09.2009
comment
Никогда не используйте абсолютный путь. Он сломается при переносе на другой компьютер. - person Cem Kalyoncu; 19.09.2009
comment
Настройка рабочего каталога в любом случае не сохраняется в файле проекта, так что это не проблема. - person RichieHindle; 19.09.2009
comment
Подумайте об этом: вы установили рабочий каталог в c: \ somedir и разместили файлы конфигурации, переместите программу в другое место, она не будет работать должным образом - person Cem Kalyoncu; 19.09.2009
comment
Похоже, это не работает с Visual Studio 2013 в рамках проекта модульного тестирования. Возможно, проекты модульного тестирования - это особые виды. Когда я пишу модульный тест, для которого требуется входной файл, мне всегда нужно указывать путь относительно местоположения исполняемого файла, независимо от того, что я установил для свойства рабочего каталога. Это довольно странно. Я всегда думал, что это тоже назначение свойства рабочего каталога. Оглядываясь назад, если вам нужно иметь возможность запускать exe вне отладчика, в любом случае нецелесообразно использовать свойство рабочего каталога. - person shawn1874; 29.11.2016

Рабочий путь - каталог проекта.

person Cem Kalyoncu    schedule 18.09.2009
comment
По крайней мере, в VS C ++ 2005 и 6.0 - person Cem Kalyoncu; 19.09.2009