简体   繁体   English

如何在while循环中将结构变量的多个实例存储到appendable.txt文件中

[英]How does one store multiple instances of a variable of a structure in a while loop to an appendable .txt file

I am writing a simple program that stores employee info into a.txt file.我正在编写一个简单的程序,将员工信息存储到 .txt 文件中。 It is supposed to continue writing profiles infinitely until 'n' is chosen to close file.它应该无限地继续写入配置文件,直到选择“n”来关闭文件。 The problem is that every time i enter in a new Emp.问题是每次我输入一个新的Emp。 the previous gets overwritten, can someone help me see my oversight?以前的被覆盖了,有人可以帮我看看我的疏忽吗? Thank You in advance.先感谢您。

#include <iostream>
#include <fstream>
#include <cstdlib>   // needed for exit()  
#include <string>
#include <iomanip>  // needed for formatting

using namespace std;

struct
    {
        string Names;
        string Social;
        double HourlyRate;
        double HoursWorked;
    } employee_info;

int main()
{
    char contn = 'y';
    char exitf = 'n';
  string filename = "employee_info.txt";  // initialize the filename up front
  ofstream outFile;

  outFile.open(filename.c_str());
  fstream file1;
  if (outFile.fail())
  {
    cout << "The file was not successfully opened" << endl;
    exit(1);
  }

  {
      string employee;
    while (contn == 'y')
    {

    cout << "Please enter Employee Name \n";
    getline (cin,employee_info.Names);
    cout << "Please enter Employee Social Security Number \n";
    getline (cin,employee_info.Social);
    cout << "Please enter Employee's Hourly Rate \n";
    cin >> employee_info.HourlyRate;
    cout << "Please enter Hours Worked \n";
    cin >> employee_info.HoursWorked;
    cout << " Enter y if you would like to enter another employee. \nEnter n to write to file. : \n ";

    cin >> contn;
    cin.ignore();

  // set the output file stream formats
  outFile << setiosflags(ios::fixed)
        << setiosflags(ios::showpoint)
        << setprecision(2);

  // send data to the file
  }

  outFile << employee_info.Names <<endl<< employee_info.Social <<endl<< employee_info.HourlyRate <<endl<< employee_info.HoursWorked << endl;
file1.open("employee_info.txt",ios::app);
  }
while (exitf == 'n')
{
  outFile.close();
  cout << "The file " << filename 
       << " has been successfully written." << endl;

  return 0;
}}    

Name your struct:命名你的结构:

struct employee
{
    string Names;
    string Social;
    double HourlyRate;
    double HoursWorked;
};

Then in main, make a std::vector of these employee structs.然后在 main 中,制作这些员工结构的std::vector

( #include <vector> at the top) then std::vector<employee> empvec #include <vector>在顶部)然后std::vector<employee> empvec

At the top of the while loop, create a new employee employee temp;在 while 循环的顶部,创建一个新employee employee temp;

At the end of the loop, push_back() your new employee with all of the data.在循环结束时, push_back()包含所有数据的新employee empvec.push_back(temp) ; empvec.push_back(temp) ;

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM