如何将二进制文件中的信息发送到屏幕AND外部文件

How do I send information from a binary file to the screen AND external file?

本文关键字:屏幕 AND 文件 外部 信息 二进制文件      更新时间:2023-10-16

在我的一个项目中,我必须从二进制文件中读取4个独立的结构,然后将信息发送到屏幕和外部文件。有人能教我怎么做吗?我相信我已经看过这些文件了。

此外,当我编译和运行程序时,我会给用户一个继续的选项(当"Y"时做一个简单的操作)。如果用户输入了无效字符,我希望得到无效响应。请回答"Y"表示是,"N"表示否。它确实这样做了,但是,在输出之后,系统("暂停")将顺其自然,并按任意键继续将显示,指示pogram的终止。我很困惑为什么有人也可以帮助我。如果我输入Y或N,它将退出程序。

非常感谢

#include <iostream>
#include <fstream>
#include <cstdlib>
#include <string>
#include <iomanip>
#include <cctype>
using namespace std;
const int SIZE = 12;

struct Division
{
char divName [SIZE];
double sales [4];
};
int main()
{
Division Div_E; 
Division Div_W; 
Division Div_N; 
Division Div_S;
void Describe_Program ();
void Create_Corporate_File (Division& mainDiv);
void Display_Corporate_Sales (Division& Div_E, Division& Div_W, Division& Div_N, Division& Div_S);

Describe_Program();
         string Div; 
         char ans;
do
{  
    cout << "Enter the name of the division: n";
    getline (cin,Div); 
     cin.ignore();
        if (Div == "East")
        {  
                Create_Corporate_File (Div_E);
                }      
        else if (Div == "West")
        { 
             Create_Corporate_File (Div_W);
             }
        else if (Div == "North")
        {
             Create_Corporate_File (Div_N);
             }
        else if (Div == "South")
        {
             Create_Corporate_File (Div_S);
             }
             else 
             {
              }
             cout << "nWould you like to continue? (Y/N)--n";  
              cin>>ans; 
              ans = toupper (ans);
               if (ans != 'Y' && ans != 'N')
               {
                       cout << "Invalid response. Please answer 'Y' for n"; 
                       cout << "Yes and 'N' for no.n" <<endl; 
                       } 
//cin.ignore();

}
        while (ans == 'Y');      
//Display_Corporate_Sales(Div_E, Div_W, Div_N, Div_S); 
system ("PAUSE");
return 0; 
}

void Describe_Program()
{ 
    cout << "This program will prompt you to enter the sales amountn";
    cout << "for each quarter of the North, South, West and East Division.n";
    cout << "After you enter the sales amount for each quarter, the programn";
    cout << "will be able to calculate the total quarterly sales for that";
    cout << "division"; 
    cout << endl<<endl; 
         return; 
} 
void Create_Corporate_File (Division& mainDiv)
{
     fstream quarterly_sales; 
     quarterly_sales.open ("quarterly_sales.dat" , ios::out|ios::binary);
          for(int sales = 0; sales < 4; sales++)
          {         
    cout << "Please enter the sales amount for quarter " << sales + 1 <<":n";
    cin >> mainDiv.sales [sales]; 
        }

     quarterly_sales.write((char*)(&mainDiv), sizeof(mainDiv));
     quarterly_sales.close (); 
}
void Display_Corporate_Sales (Division& Div_E, Division& Div_W, Division& Div_N, Division& Div_S)
{
     fstream quarterly_sales; 
     quarterly_sales.open ("quarterly_sales.dat" , ios::in|ios::binary);      

     quarterly_sales.read ((char *)(&Div_E), sizeof(&Div_E));
     cout << Div_E.divName ;
     cout << Div_E.sales[0];  
     quarterly_sales.read (reinterpret_cast<char *>(&Div_W), sizeof(&Div_W))
     cout << Div_W.divName ;
     cout << Div_W.sales[0];   
     quarterly_sales.read (reinterpret_cast<char *>(&Div_N), sizeof(&Div_N))
     cout << Div_N.divName ;
     cout << Div_N.sales[0];   
     quarterly_sales.read (reinterpret_cast<char *>(&Div_S), sizeof(&Div_S))
     cout << Div_S.divName ;
     cout << Div_S.sales[0];   

    quarterly_sales.close(); 
    return; 
     }

虽然我不打算给你家庭作业的代码答案,但你要寻找的命令是cout(写入屏幕)和file IO命令(请参阅以下链接和"文本文件"下的示例):

http://www.cplusplus.com/doc/tutorial/files/