我正在完成一项任务:
提示用户输入不少于1582的年份。
生成一个文件(cal.dat),其中包含我编写的代码生成的日历。
我编写了接受输入的代码,计算它是否为闰年,然后使用cout
返回该年的日历。
当我尝试将日历输出到文件时,Xcode在编译时给出了这个错误:
Invalid operands to binary expression ('ofstream' (aka 'basic_ofstream<char>') and 'void')
部分代码如下:
#include <iostream>
#include <iomanip>
#include <fstream>
using namespace std;
void PrintMonth(int year, bool leap);
ofstream calendar("cal.dat");
int main()
{
// Setting up the parameters for the PrintMonth function
int year=0;
bool leap=false;
// Input for the year
cout << "Enter a 4 digit year: ";
cin >> year;
// Loop for an incorrect entry
while (year<1582)
{
cout << "Year too low, please re-enter: ";
cin >> year;
}
// Calculate if the input year is a leap year or not
if ((year%4==0 && year%100!=0) || year%400==0)
leap=true;
// Output the year and the calendar for the year requested
calendar << setw(15) << year << endl << endl;
calendar << PrintMonth(year, leap);
return 0;
}
答案 0 :(得分:1)
你写calendar << PrintMonth(year, leap)
,这意味着你将PrintMonth
的返回值传递给calendar
。
但是,根据签名void PrintMonth(int year, bool leap)
,此函数不会返回可以打印出来的值。
您的意思是PrintMonth(year,leap);
而不是calendar << PrintMonth(year,leap)
吗?
因此,您可以复制PrintMonth
- 函数,将签名更改为void PrintMonth(int year, bool leap, std::ostream& out)
,调整其实现以写入out
而不是cout
,然后调用{{1}而不是写PrintMonth(year,leap, calendar);
。