C ++流文件仅显示while循环后的最后一行

c++ ofstream file only displaying last line after while loop

本文关键字:最后 一行 循环 文件 while 显示      更新时间:2023-10-16

我在几个编码作业中遇到了很多麻烦,希望有人能引导我朝着正确的方向前进。如果这个问题发布在其他地方,我提前道歉。我真的不知道如何表达这个问题以找到类似的东西。问题是我正在尝试通过几个布尔函数从.txt文件中运行一些数字,这些函数会将结果输出到另一个.txt文件。我遇到的问题是它只是输出到输出文件的最后一行。我试着问我的教授,他无法和我一起弄清楚(这让我很沮丧)。

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

if (!inFile) {

        cout << "error opening filen";
    }
    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 validn";
            }
            else if (validate_hour(hour) == false && validate_minute(min) == true) {
                outFile << hour << ":" << min << " hour is invalid and minute is validn";
            }
            else if (validate_hour(hour) == true && validate_minute(min) == false)
            {
                outFile << hour << ":" << min << " hour is valid and minute is invalidn";
            }
            else if (validate_hour(hour) == false && validate_minute(min) == false)
            {
                outFile << hour << ":" << min << " hour is invalid and minute is invalidn";
            }
    outFile.close();

这就是我得到的。time_validation.txt文件中显示的每一对数字都应该有一行。

感谢您为我完成本实验提供的任何帮助。谢谢你的关注。

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

 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";
    }

这样的东西应该可以工作,因为您还没有发布完整的代码,我无法判断程序在文件中写入了多少次,据我所知,您在验证所有输入后只向文件提供一次输出,而您应该为每个输入循环提供输出到文件。