【发布时间】:2016-03-18 08:26:02
【问题描述】:
我的几个编码任务遇到了很多麻烦,希望有人能引导我朝着正确的方向前进。如果这个问题发布在其他地方,我提前道歉。我真的不知道如何表达这个问题以找到类似的东西。问题是我试图通过几个布尔函数从 .txt 文件中运行一些数字,这些函数会将结果输出到另一个 .txt 文件。我遇到的问题是它只是输出到输出文件的最后一行。我试着向我的教授询问这件事,但他无法和我一起解决(这让我很沮丧)。
这是我的代码,我上传了一张图片来显示创建的文本文件。
如果 (!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();
感谢您为完成本实验提供的任何帮助。感谢您的关注。
感谢大家的意见。我按照建议更改了while(inFile) to while (inFile >> hour >> min)。显然,我需要更多地练习 while 循环。再次感谢所有给我建议的人,这对我的代码完成很有帮助。
【问题讨论】:
-
你的代码看起来……很奇怪。为什么将输入和输出放在括号中?为什么要在循环中声明函数原型?谈论循环,不要做例如
while(inFile)或while (!inFile.eof())因为它很少按预期工作。而是做while (inFile >> hour >> min)。另请注意,在读取数字或字符串时,输入运算符>>会跳过前导空格(包括换行符),因此很可能不需要ignore调用。 -
您的
while()循环甚至在打开输出文件之前就处理了整个输入文件。然后它只是使用从输入文件中读取的最后一个值,重新验证它们。您可能希望将输出代码 inside 您的while()循环。