从文件添加和检索类的对象 - C ++

时间:2014-01-28 18:30:59

标签: c++ file file-io

我有一些代码,如;

#include<iostream.h>
#include<string.h>
#include<conio.h>
class MyClass{
  char mystring[10];
  int mynumber;
 public:
  MyClass(){}
  MyClass(char x[],int y){
    strcpy(mystring,x);
    mynumber = y;
  }
  void disp(void){
    cout<<mystring<<" - "<<mynumber;
  }
  void read(void){
    cout<<"enter char and number\n";
    cin>>mystring>>number;
  }
}

int main(){
  Myclass test[10];

  for(int i=0;i<9;i++){
    test[i].read;
    //then store the object into file
  }

  //if user want to display data, then read from file like;
  // string1 - 1234
  // string2 - 3432
  // string9 - 4830

getch();
return 0;

}

我想将一些字符串和一个关联的号码(如电话号码簿)存储到一个文件中,比如说myfile.txt为二进制文件。数据文件可以存储 MyClass对象。如何将信息存储到文件中并从文件中打印整个数据?无需进行文件搜索。

1 个答案:

答案 0 :(得分:0)

更喜欢使用std::string

class Phone_Entry
{
  std::string name;
  std::string phone_number;
};

在写入和读取文件时,您应该让对象执行I / O. 此外,由于字符串的长度不同(也就是可变大小记录),您需要先写入文本长度,然后写入带有结束标记的文本。

我们假设一行上的姓名和另一行的电话号码:

class Phone_Entry
{
  // as above
  friend std::ostream& operator<<(std::ostream& out, const Phone_Entry& pe);
  friend std::istream& operator>>(std::istream& inp, Phone_Entry& pe);
};

std::ostream&
operator<<(std::ostream& out, const Phone_Entry& pe)
{
  out << pe.name << "\n";
  out << pe.number << "\n";
  return out;
}

std::istream&
operator>>(std::istream& inp, Phone_Entry& pe)
{
  std::getline(inp, pe.name);
  std::getline(inp, pe.number);
}

现在,您可以使用operator>>从文件中读取条目:

std::ifstream phone_book_file("phone_book.txt");
Phone_Entry entry;
phone_book_file >> entry;

同样适用于输出:

cout << entry;

通过阅读C ++ FAQ(在网上搜索C ++ FAQ),您将获益匪浅。