2016-07-01 5 views
0

Добрый вечер всем. Начну с того, что я совершенно не знаком с программированием и языком C++.Файл не открывается с ifstream C++ на IOS Mac

У меня возникла проблема с открытием файла, чтобы использовать его в моей программе. Я прочитал подобный пост и последовал рекомендациям. Я использую ifstream для объявления моего входного файла и включаю полный путь к файлу, который я хочу открыть. Я попытался переместить файл в другие папки, в том числе в файлах рабочей области, я попытался открыть его только с титром, я включил команду «ios :: in» после объявления моего входного файла; независимо от изменений, которые я сделал, я продолжаю получать то же сообщение об ошибке, которое я создал:

Не удалось открыть.

Я пробовал 3 разных компилятора, на данный момент используя CodeRunner. Я получаю исходные сообщения, напечатанные в выходном файл:

Эта программа считывает и вычисляет статистику для слов на входной файл и создает выходной файл с результатами. Он рассчитает общее количество слов, количество слов с разным числом букв и среднее количество букв на слово.

Есть ли что-то, что мне не хватает в объявлениях переменных? Не хватает ли каких-либо директив? Является ли это той командой, которую я использую для ее открытия? Благодарим вас за внимание и оцените любые идеи или решения.

// Directives 
#include <iostream> 
#include <cstdlib> 
#include <cassert> 
#include <fstream> 
#include <string> 
using namespace std; 

void words_statistics(ifstream & fin, ofstream & fout); 
// Opens a file, reads it, computes statistics of for the words on the file. 

int main(){ 
    // Variables declaration 
    ifstream fin; //Variable type for Input files. 
    ofstream fout; // Variable type for output files. 
    string inFile, outFile; 

    fout << "This program reads and computes the statistics for the words on a input file \n"; 
    fout << "and creates an output file with the results.\n"; 
    fout << "It will compute the total number of words, amount of words with different number \n"; 
    fout << "of letters and the average quantity of letters per word.\n"; 

    // Open input file to read-in 
    fin.open("/Macintosh HD/Users/antonydelacruz/Downloads/words.txt"); 
    if(fin.fail()) // Generate Error message input file. 
    { 
     cout << inFile << " Failed to open."<< endl; 
     exit (1); 
    } 

    fout.open("/Macintosh HD/Users/antonydelacruz/Downloads/words_statistics.txt"); 
    if(fout.fail()) // Error message in case that the program can't access output file. 
    { 
     cout << inFile << " Failed to open file Words Statistics."<< endl; 
     exit (1); 
    } 
    // Function call 
    words_statistics(fin, fout); 

    fin.close(); // Close input File. 
    fout.close(); // Close output file. 

    return 0; 
} 

// Function Definition 
void words_statistics(ifstream & fin, ofstream & fout) 
{ 
    // Variable Declaration 
    std::string inFile, outFile; 
    int lettersQuantity=0; //Variable to accumulate the amount of letters per word. 
    int totalWords=0; // Variable to accumulate the total amount of Words. 
    double avg=0; 
    int un, deux, trois, quatre, cinq, six, sept, huit, neuf, dix, onze, douze, treize, otre; // Variables to accummulate words depending on the amount of letters that they have. 
    un = deux = trois = quatre = cinq = six = sept = huit = neuf = dix = onze = douze = treize = otre=0; 

    while (!fin.eof()) { //Specifies to noly use the switch feature while there is data to read. 

     (fin >> inFile); // Extracts data from file. 
     lettersQuantity++; // Adds the amount of letters per word. 
     totalWords++; // Adds the total amount of words 

     switch (lettersQuantity){ //Evaluates each word and adds it to a category depending on how many letters the word has. 

ответ

2
// Function call 
void words_statistics(ifstream & fin, ofstream & fout); 

Это не вызов функции. Это еще одно объявление функции. Использование:

words_statistics(fin, fout); 
+0

Спасибо за наблюдение , Я внес изменения, но это не причина, почему файл не открывается. Он продолжает выдавать сообщение об ошибке. – antonydelacruz

0

Вы вызов неправильно функции, она используется для объявления функции:

void words_statistics(ifstream & fin, ofstream & fout);

Но вы должны вызвать функцию следующим образом:

words_statistics(fin, fout); 
+0

Спасибо за помощь. Кто-то другой обратился ко мне с этой проблемой, я обновил ее в своей программе, но не в своем посте. Исправление вызова функции не решило проблему; Я все еще не могу открыть файл. – antonydelacruz