c ++ ofstream文件仅在while循环后显示最后一行

时间:2016-03-18 08:26:02

标签: c++ function ofstream

我在完成一些编码工作时遇到了很多麻烦,希望有人能引导我朝着正确的方向前进。如果这个问题发布在别处,我会提前道歉。我真的不知道如何用短语来表达类似的东西。问题是我试图通过几个布尔函数从.txt文件运行一些数字,这会将结果输出到另一个.txt文件。我遇到的问题是它只是输出到outfile的最后一行。我试着向我的教授询问这个问题,而且我无法解决这个问题(这让我很沮丧)。

这是我的代码,我上传了一张图片来显示已创建的文本文件。

if(!inFile){

        cout << "error opening file\n";
    }
    else
    {
        while (inFile) {
            (inFile >> hour >> min);
            (cout << hour << ":" << min << endl);
            bool validate_hour(hour);
            bool validate_minute(min);
            inFile.ignore(1);
        }

            outFile.open("time_Validation.txt", ios::out | ios::app);

            if (validate_hour(hour) == true && validate_minute(min) == true) {
                outFile << hour << ":" << min << " hour is valid and minute is valid\n";
            }

            else if (validate_hour(hour) == false && validate_minute(min) == true) {
                outFile << hour << ":" << min << " hour is invalid and minute is valid\n";
            }

            else if (validate_hour(hour) == true && validate_minute(min) == false)
            {
                outFile << hour << ":" << min << " hour is valid and minute is invalid\n";
            }

            else if (validate_hour(hour) == false && validate_minute(min) == false)
            {
                outFile << hour << ":" << min << " hour is invalid and minute is invalid\n";
            }

    outFile.close();

This is what I'm getting. There should be a line for each of those pairs of numbers displayed in the time_validation.txt file.

感谢您提供给我完成此实验的任何帮助。谢谢你的期待。

感谢大家的意见。我按照建议改变了while(inFile) to while (inFile >> hour >> min)。显然,我需要更多的while循环练习。再次感谢所有给我建议的人,这对完成我的代码非常有帮助。

1 个答案:

答案 0 :(得分:0)

 outfile.open("time_validation.txt",ios::out | ios::app);
    while(!infile)
        cout << "file does not exist" << endl;
    while(infile)
    {
        infile >> hour >> min;
        if(validate_hour(hour))
            outfile << hour << " hour is valid ";
        else
            outfile << hour << " hour is invalid ";
        if(validate_minute(minute))
            outfile << minute << " minute is valid \n";
        else
            outfile << minute << " minute is invalid \n";
    }

这样的东西应该有效,因为你还没有发布完整的代码,我不知道程序在文件中写了多少次,据我所知,你只是在验证了所有的文件之后才输出一次文件输入,而你应该为每个输入循环输出文件。