我的输出文件应该显示以回答它调用的函数。程序运行良好,但它不会在"prime"函数中显示文本。选中后,输出文件仅显示 1。我相信这是因为它被声明为布尔函数,并设置为返回 true。但是,我将如何获取此代码以将 Prime 中的解决方案返回到输出文件?
#include <iostream>
#include <iomanip>
#include <fstream>
#include <string>
using namespace std;
bool prime(int);
int main()
{
int reader;
ifstream Infile;
Infile.open("numlist.txt");
ofstream outputFile;
outputFile.open("theoutput.txt");
while (Infile >> reader)
{
outputFile << prime(reader) <<endl;
}
Infile.close();
outputFile.close();
}
bool prime(int p)
{
if (p % 2 == 0)
cout << "n" << p << "n Is not a prime number";
else if (p % 2 != 0)
cout << "n" << p << "n is a prime number";
return true;
}
没有错误,但是输出文件仅显示 1。
发生这种情况是因为在您的prime()
函数中,所有输出都将cout
而不是进入outputFile
。prime()
函数返回一个bool
,即发送到outputFile
的内容。
如果你想让函数的输出转到outputFile
,你可以将outputFile
作为参数传递并使用它而不是cout
,或者使其成为全局的。
关于代码的更多注释:您不需要 else 语句中的完整else if (p % 2 != 0)
。 你可以只使用else
,因为p % 2
要么是 0,要么不是,没有其他选择。
此外,强烈建议在 if 语句两边使用大括号,即使它们只是一行。