我有一些代码,如;
#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
的对象。如何将信息存储到文件中并从文件中打印整个数据?无需进行文件搜索。
答案 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),您将获益匪浅。