2015-05-29 3 views
0

Я пытаюсь прочитать файл, чтобы я мог усреднить числа, перечисленные в файле. Я считаю, что мой код правильный, но я все время получаю сообщение об ошибке в Visual Studio: «Невозможно запустить программу ... Система не может найти указанный файл». Файл, который я хочу прочитать, «numbers.dat» находится в каталоге, но он все еще показывает эту ошибку.Ошибка при попытке запустить файл, читаемый в C++

Я новичок в C++, поэтому мне было интересно, сможет ли кто-нибудь помочь?

Вот мой код

#include <iostream> 
#include <fstream> 
#include <string> 

using namespace std; 

int main() { 
    ifstream myfile; 
    myfile.open("numbers.dat"); 
    int total = 0, count = 0, num; 
    while (!myfile.eof()){ 
     myfile>>num; 
     total += num; 
     count++; 
    } 

    cout<<"The "<<count<<" numbers total "<<total<<" and average "<<total/count<<endl; 
    myfile.close(); 
    system("pause"); 
    return 0; 
} 
+0

Является ли ваш файл в том же каталоге, что и файлы кода? Это проблема – Spanky

+0

Не связанная с вашей проблемой, но вам нужно прочитать [Why is "while (! Feof (file))" всегда неправильно? "(Http://stackoverflow.com/questions/5431941/why-is-while -feof-файлы всегда-неправильно). –

+0

Я сомневаюсь, что конкретное сообщение находится в окне вывода из-за отказа открыть указанный файл. Скорее, это конкретное сообщение обычно происходит потому, что исполняемая Visual Studio пытается * загрузить *, поскольку debuggee не может быть загружен * вообще *. Просматривая прослеживание, является ли это неправильной конфигурацией проекта или отсутствующей зависимостью (например, redist DLL) для такой простой программы, потребуется много времени, и ваше время, вероятно, лучше потрачено на создание нового * консольного * проекта, копирование вашего исходный код, и попробуйте новый проект. – WhozCraig

ответ

0

Spanky, скорее всего, правильно, но предоставить более подробную информацию -

Visual Studio компилирует программу в каталог сборки. Когда вы запускаете свою программу через Visual Studio, она запускается из каталога сборки. По умолчанию каталог сборки не является той же папкой, что и исходный код, поэтому ваша программа не будет находить файлы, в которых вы смешиваете исходный код.

Возможные решения:

  • Вы можете скопировать файл в каталог для сборки
  • Вы можете изменить свой каталог для сборки
  • Вы можете использовать абсолютные или относительные пути к файлам, чтобы указать на правильное расположение
0

Я не использую MSS для разработки, но обычная практика заключается в том, что люди пропускают что-то из каталога, , откуда запускается программа., а в каталоге вы думаете, что программа запущена, различны.

Например, u've получил каталог сборки d: \ проект \ построить,

Составитель двоичный (EXE) находится в d: \ проекта \ сборки \ отладки каталога.

Ну, ваш numbers.dat, вероятно, должны быть расположены в D: \ проекта \ построить каталог и НЕ в d: \ проект \ сборка \ отлаживать.

Смежные вопросы