C++如何通过输入输出流重载方法读取文件中的数据,并且将数据保存到类的变量中?

比如有个dat.txt文件内容是:
12 25
15 6
62 51
66 56
如何将这些数据保存到类的private成员中

#include<iostream>

#include<string>

#include<fstream>

using namespace std;

class haha{

private:

int a[8];

int size;

public:

void input(string filename)

{

ifstream infile(filename.c_str());

int i=0;

int temp=0;

while(infile>>temp)

{

a[i]=temp;

i++;

}

size=i;

}

void show(){

for(int i=0;i<size;i++)

cout<<a[i]<<" ";

}

};

int main()

{

 haha xiaojiba;

 cout<<"Input filename:"<<endl;

 string name;

 cin>>name;

 xiaojiba.input(name);

 xiaojiba.show();

 return 0;

}

追问

谢谢你
是重载>
不是文件输入输出流

追答

#include<iostream>

#include<string>

#include<fstream>

using namespace std;

class haha{

private:

int a[8];

int size;

public:

void input(string filename)

{

ifstream infile(filename.c_str());

int i=0;

int temp=0;

while(infile>>temp)

{

a[i]=temp;

i++;

}

size=i;

}

void show(){

for(int i=0;i<size;i++)

cout<<a[i]<<" ";

}

friend void operator >>(string name,haha &a)

{

a.input(name);

}




};

int main()

{

 haha xiaojiba;

 cout<<"Input filename:"<<endl;

 string name;

 cin>>name;

name>>xiaojiba;

 //xiaojiba.input(name);

 xiaojiba.show();

 return 0;

}

温馨提示:内容为网友见解,仅供参考
第1个回答  2015-08-04
#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>
#include<string.h>
/*文件内容格式:
1 1 asd asd 1
2 2 asaad aasd 2
3 3 asaad asad 3
.....
*/

int main()
{
int a,b,c;
char SongName[50];
char Name[50];
memset(SongName,0,50);
memset(Name,0,50);

FILE * fp = fopen("test.dat","r");
if(!fp)
{
printf("file open error\n");
exit(-1);
}
while(fscanf(fp,"%d%d%s%s%d",&a,&b,SongName,Name,&c) != EOF)
{
printf("%d\t%d\t%s\t%s\t%d\n",a,b,SongName,Name,c);
memset(SongName,0,50);
memset(Name,0,50);
}
return 0;

}

自己看看吧! 改改就好 C++ 里也能可以用while(fscanf(fp,"%d%d%s%s%d",&a,&b,SongName,Name,&c) != EOF) 只是后面赋值的时候改为你对象下面对应的属性值!
第2个回答  2013-05-25
基本的读写文件问题+类的基本操作。
第3个回答  2013-05-25

c++的文件输入输出流中,能够从文件中读取数据的方法有哪些?
4. operator>>方法:operator>>方法是C++标准输入输出流中最常用的方法,可以从文件输入流中读取各种类型的数据,并将其存储在变量中。语法:istream& operator>>(type& var)其中,type表示要读取的变量的数据类型,var表示要存储数据的变量。需要注意的是,所有的读取方法都需要在文件打开之后进行。我们...

请问在c++中如何进行文件的输入输出以及读入?
当文件读写操作完成之后,我们必须将文件关闭以使文件重新变为可访问的。关闭文件需要调用成员函数close(),它负责将缓存中的数据排放出来并关闭文件。它的格式很简单:void close ();这个函数一旦被调用,原先的流对象(stream object)就可以被用来打开其它的文件了,这个文件也就可以重新被其它的进程(process)所有访问了。

C++如何在文件中读取数据,然后保存在一个数组中
include<iostream> include<fstream> using namespace std;void main(){ int s[5][2];ifstream fin("a.txt");int x;fin>>x;for(int i=1;i<x;i++){ for(int j=1;j<2;j++){ fin>>s[i][j];} } ofstream fout("input.txt");fout<<x;for(int k=1;k<k;k++){ for(in...

C++ 怎样把运行得到的数据写入文件 如何保存
ifstream fint; \/\/从文件读取 fout.open("out.txt"); \/\/打开文件,如果没有,就创建,默认保存在你软件安装目录下。fout<<dog1.weight<<"\\n"<<dog1.age<<endl; \/\/数据写入。如果你有很多数据的话,可以编写个循环。fint.open("out.txt"); \/\/打开文件 fint>>dog2.weight>>...

详解下C++中对文本文件的读写操作
从流中输入数据。比如说系统有一个默认的标准输入流(cin),一般情况下就是指的键盘,所以,cin> > x; 就表示从标准输入流中读取一个指定类型(即变量x的类型)的数据。 在C++中,对文件的操作是通过stream的子类fstream(file stream)来实现的,所以,要用这种方式操作文件,就必须加入头文件fstream.h...

c++ 读出一行n列数字 存入变量中
从流中输入数据。比如说系统有一个默认的标准输入流(cin),一般情况下就是指的键盘,所以,cin>>x;就表示从标准输入流中读取一个指定类型(即变量x的类型)的数据。 在C++中,对文件的操作是通过stream的子类fstream(file stream)来实现的,所以,要用这种方式操作文件,就必须加入头文件<fstream>下面就把此类的文件操作...

c++中怎么自己实现输入和输出?
在 C++ 中实现文件的输入与输出,可以通过 istream 和 ostream 类及其派生类完成。这些类直接或间接关联到物理文件,通过文件流对象如 myfile 操作文件。文件操作的第一个步骤通常是打开文件,这可以通过流对象的成员函数 open 来实现,参数包括文件名和可选的模式标志,如 ios::binary。如果文件打开成功...

C++写文件再次运行程序后,之前保存的文件的数据就没有了,如何让数永久...
文件是流的一种保存方式 使用方式如下:C++文件流:fstream\/\/ 文件流ifstream  \/\/ 输入文件流ofstream  \/\/ 输出文件流 \/\/创建一个文本文件并写入信息\/\/同向屏幕上输出信息一样将信息输出至文件#include<iomanip.h>#include<fstream.h>void main(){ofstream f1("d:\\\\me.txt"); \/\/打开文件用于...

c++如何用文件流将数据存储到一个TxT文件中
4、在代码头部包含入我们需要的头文件,这里因为是C++所以需要包含输入输出流iostream、文件流fstream以及默认的命名空间std;5、在主函数首先用ofstream从内存到硬盘的流操作创建一个out对象,然后在参数中传入待输出文件的文件名,然后使用out输出带输出的字符序列;6、然后为了检查我们的输入结果是正确的,...

C++编程读取TXT数据,将其赋值到数组,而后进行计算
最简单的方式是用freopen,使用了这个函数之后所有的cin\/cout就会从文件中读出或者写入,或者也可以用fstream;include <iostream>#include <cstdio>#define maxn 10000using namespace std;struct m{ int x; int y; int z;}a[maxn];int main(){ freopen("\/*文件名*\/","r"\/*代...

相似回答