C ++使用简单的代码同时写入文件和控制台输出

时间:2018-04-20 09:11:31

标签: c++ fstream ofstream

我正在尝试将以下整个函数写入文本文件,同时仍然保持其控制台输出功能而不需要代码冗余。有没有一种简单的方法可以同时将整个方法的结果发布到文件和控制台?

#include<iostream>
#include<fstream>
  void sports(){
      cout<<"\nGame_Code\t\tGane\t\tCost\t\tStart Time\n";
      cout<<"\nSP-9651\t\t Game 1 \t\t60\t\t08:00";
      cout<<"\nSP-9652\t\t Game 2 \t\t60\t\t09:15";
      cout<<"\nSP-9653\t\t Game 3 \t\t55\t\t09:55";
      cout<<"\nSP-9654\t\t Game 4 \t\t55\t\t11:00";
      cout<<"\nSP-9655\t\t Game 5 \t\t50\t\t13:00";
      cout<<"\nSP-9657\t\t Game 7 \t\t45\t\t19:45";
      cout<<"\nSP-9659\t\t Game 8 \t\t70\t\t22:45";
      cout<<"\n\n";
     } 
    int main(){
    //This is for console output
    sports();
    }

5 个答案:

答案 0 :(得分:2)

Streams可以传递给函数。所以有一个打印功能可以同时输出两个输出。

void print(std::ostream &os1, std::ostream &os2, const std::string &str)
{
    os1 << str;
    o22 << str;
}

void sports()
{
    std::fstream file("filename");

    print(std::cout, file, "\nSP-9651\t\t Game 1 \t\t60\t\t08:00");
    print(std::cout, file, "\nSP-9652\t\t Game 2 \t\t60\t\t09:00");
    print(std::cout, file, "\nSP-9653\t\t Game 3 \t\t60\t\t10:00");
    //... etc
}

int main()
{
    sports();
    return 0;
}

答案 1 :(得分:1)

是的,您可以从函数返回std::string并将其保存到变量中。 然后,您可以使用该变量在控制台或/和文件上打印它。

std::string sports(){
  std::stringstream ss;
  ss<<"\nGame_Code\t\tGane\t\tCost\t\tStart Time\n";
  // ...
  return ss.str();
 }

该功能应该只有一个目的。在您的情况下,目的是创建string.Single责任原则。

答案 2 :(得分:0)

   #include<iostream>
   #include<fstream>
   using namespace std;
  void sports(){
      ofstream fs("abc");
      cout<<"\nGame_Code\t\tGane\t\tCost\t\tStart Time\n";
      fs<<"\nGame_Code\t\tGane\t\tCost\t\tStart Time\n";

     } 
    int main(){
    //This is for console output
    sports();
    }

答案 3 :(得分:0)

你可以写一些简单的功能去吧吗?

#include<iostream>
#include<fstream>
using namespace std;

  void myoutput( fstream &fs, string str)
  {
      cout << str;
      fs << str;

  }
  void sports(){
      fstream fs("abc");
      myoutput(fs,"\nGame_Code\t\tGane\t\tCost\t\tStart Time\n ..");

     } 
    int main(){
    //This is for console output
    sports();
    }

答案 4 :(得分:0)

我建议使用一个写入文件和cout的函数。我的示例函数只需要文本。所有给定的文本都附加到文件中:

void dual_write(const std::string& text) {
    // Print to console
    std::cout << text;

    // Print to file (append)
    std::ofstream file("out.txt", std::ios_base::app);
    file << text;
}

通过电话通话 dual_write("\nGame_Code\t\tGane\t\tCost\t\tStart Time\n"); 等等。