将功能打印到输出文件

时间:2013-11-26 02:44:57

标签: c++ output

我即将完成我正在编写的程序,并且已经遇到了障碍。 我正在尝试打印一个名为print的函数的内容,该函数由指针调用。

我的问题是我需要将函数的内容打印到输出文件,我不确定如何。

这是我的打印功能:

void English::Print(){

    int formatlength = 38 - (static_cast<int>(firstName.size() + lastName.size()));

    cout << firstName << " " << lastName;
    cout << setw(formatlength) << finalExam;
    cout << setprecision(2) << fixed << setw(11) << FinalGrade();
    cout << setw(4) << Lettergrade() << endl;
}

这是打印功能的实现:

for (int i = 0; i <= numStudents - 1; i++) {
    if (list[i]->GetSubject() == "English") {
        list[i]->Print();
    }
}

for循环在我的学生名单中循环。

我的目标是list[i]->Print()将打印到我的输出文件。

2 个答案:

答案 0 :(得分:5)

只需将cout替换为ostream对象,例如:

void English::Print(ostream& fout){
  //ofstream of("myfile.txt", std::ios_base::app);
  int formatlength = 38 - (static_cast<int>(firstName.size() + lastName.size()));

  fout << firstName << " " << lastName;
  fout << setw(formatlength) << finalExam;
  fout << setprecision(2) << fixed << setw(11) << FinalGrade();
  fout << setw(4) << Lettergrade() << endl;
}

此外,您还可以在班级<<

中重载English运算符
friend ostream& operator <<( ostream& os, const English& E )
{
  //
  return os;
}

然后可以简单地使用:

fout << list[i] ;

答案 1 :(得分:0)

除了上面的答案,我认为你应该尝试这种方式,使用C的原始文件重定向功能:

将此说明放在主函数的第一行:

int main(){
    freopen("out.txt", "w", stdout);
    //your codes

“out.txt”是您要将数据放入的文件,“w”表示您要在文件中写入,而stdout是已重定向的标准输出流。