C ++: простой fstream не записывает в выходной файл (не уверен, что он принимает входной файл)

0

У меня есть тестовый файл ("InputFile.txt"), сохраненный с некоторой случайной информацией, а также пустой выходной файл ("output.txt"). Когда я отлаживаю программу и проверяю выходной файл, она остается пустой.

Должен ли "output.out" быть "output.txt" (строка 25)? У меня проблемы, потому что у меня есть "InputFile.txt" как cstring в строке 22 в инструкции if? Это правильно? Я как бы потерялся, когда дело доходит до fstream, пожалуйста, помогите.

Мой код:

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

using namespace std;

int main()
{
    ifstream InputFile;
    ofstream OutputFile;

    string lastName, firstName, fileName,
        line;
    int creditHours, state;
    int tuition;
    bool valid = false;

    do{
    cout << "Input file name (.txt): ";
    cin >> fileName;
    if(fileName == "InputFile.txt")
    {
        InputFile.open("InputFile.txt");
        OutputFile.open("output.out");
        valid = true;
    }
    else{
        cout << "Invalid file name/type." << endl;
    }
    }while(valid == false);




    OutputFile << "Last Name: " << '   ' << "First Name: " << '   '
        << "Credit Hours: " << '   ' << "Tuition Amount: " << endl;
    while(!InputFile.eof()){

    getline(cin, line);
    InputFile >> firstName >> lastName >> creditHours >> state;
    if(state == 1)
    {
        tuition = (creditHours * 350);
    }
    else
    {
        tuition = (creditHours * 570);
    }
    OutputFile << lastName << '   ' << firstName << '   ' 
        << creditHours << '   ' << tuition << endl;
    }



    InputFile.close();
    OutputFile.close();

    return 0;
}
  • 0
    Вы никогда не проверяете ни одно из ваших чтений на успех, так что это было бы хорошим началом. Замените while (!InputFile.eof()) на while (getline(cin, line) && InputFile >> firstName >> ... >> state) .
  • 0
    Если вы хотите, чтобы выходной файл был output.txt то он должен быть .open("output.txt")
Показать ещё 4 комментария
Теги:

1 ответ

2
Лучший ответ

Попробуй это

ifstream inFile;
ofstream outFile;

и откройте свой входной и выходной файлы, например

inFile.open("InputFile.txt", ios::in);
outFile.open("Output.txt",ios::out);

после этого считывать данные Inputfile и записывать их в выходной файл

while (!inFile.eof()) {
inFile >> firstName >> lastName >> creditHours >> state;
outFile << firstName << " " << lastName<<"  "<<creditHours<< " " <<state<<"  "<< endl;
}

и применять логику в цикле по-своему

Ещё вопросы

Сообщество Overcoder
Наверх
Меню