C++如何在文件中读取数据,然后保存在一个数组中

例如我的数据保存在“D:\input.txt”下,里面数据如下:
5
1 2
2 2
1 3
1 1
2 4
第一行是数据的个数,将其保存在一个int型变量中,从第二行开始是横纵坐标值,注意每行两个int型数中有空格,怎么将每行数据(即横纵坐标)从文件读出,然后保存至一个数组中?
请各位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(int t=1;t<2;t++)

{

fout<<s[k][t];

}

}

}

这个就是的。

扩展资料:

C++ fstream文件流读写文件操作详解

参数:

filename:要打开的文件名

mode:要打开文件的方式

access:打开文件的属性

打开文件的方式在类ios(是所有流式I/O类的基类)中定义,常用的值如下:

ios::app:以追加的方式打开文件

ios::ate:文件打开后定位到文件尾,ios:app就包含有此属性

ios::binary:以二进制方式打开文件,缺省的方式是文本方式。

ios::in:文件以输入方式打开

ios::out:文件以输出方式打开

ios::nocreate:不建立文件,所以文件不存在时打开失败 

ios::noreplace:不覆盖文件,所以打开文件时如果文件存在失败

ios::trunc:如果文件存在,把文件长度设为0

可以用“或”把以上属性连接起来,如ios::out|ios::binary

打开文件的属性取值是:

0:普通文件,打开访问

1:只读文件

2:隐含文件

4:系统文件

可以用“或”或者“+”把以上属性连接起来 ,如3或1|2就是以只读和隐含属性打开文件。

例如:以二进制输入方式打开文件c:config.sys

fstream file1;

file1.open("c:\config.sys",ios::binary|ios::in,0);

如果open函数只有文件名一个参数,则是以读/写普通文件打开,即:

file1.open("c:\config.sys");<=>file1.open("c:\config.sys",ios::in|ios::out,0);

另外,fstream还有和open()一样的构造函数,对于上例,在定义的时侯就可以打开文件了:

fstream file1("c:\config.sys");

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2019-10-09

编写代码如下:

#include <iostream>

#include <fstream>

#include <string>

#include <vector>

using namespace std;

int main()

{

ifstream infile;

infile.open("1.txt");

if(!infile) cout<<"error"<<endl;

string str;

int t1;

/*  while(getline(infile,str))   //按行读取,遇到换行符结束

{   

infile.getline(str,10);

cout<<str<<endl;

}

*/

/*//存入vector

cout<<"存入vector"<<endl;

vector<int> ve;

while(infile>>t1)             //按空格读取,遇到空白符结束

{

ve.push_back(t1);         

}

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

cout<<ve[i]<<" ";

cout<<endl;

*/

//存入数组

cout<<"存入数组"<<endl;

int a[3][4];

int*p=&a[0][0];

while(infile>>t1)             //遇到空白符结束

{

*p=t1;

p++;

}

infile.close();

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

{   for(int j=0;j<4;j++)

cout<<a[i][j]<<"\t";

cout<<endl;

}

return 0;

}

扩展资料:

编译 C++ 程序方法:

1、打开vs2010,选择"visual c++开发设置",然后点击"启动Visual Studio"。

2、"Visual Studio"选择默认环境设置。

3、进入"Visual Studio"后点击新建项目。

4、在弹出窗口选择 Visual C++标签下的空项目,输入名称以及保存位置。

5、在左侧的"解决方案资源管理器"中,选择"源文件"右击,然后选择"添加"->"新建项"。

6、在弹出窗口中,选择"C++文件(.cpp)",输入文件名称,单击"添加"。

7、现在输入具体的代码,例如输入简单的Hello World程序。

8、依次单击"调试"->"开始执行(不调试)"或按Ctrl+F5开始运行。

本回答被网友采纳
第2个回答  推荐于2017-10-02
参考代码和相关注释如下:
#include <iostream>
#include <fstream>
using namespace std;
int main(void)
{
ifstream inf("c:\\da.txt"); //假设数据保存在c:\da.txt文件中
double data[10000]; //用于保存读取出来的数字的数组
int i=0;
while (inf>>data[i]) //将inf文件中的数字读取到data数组中
++i;
inf.close(); //读取完毕后,关闭文件
for (int j=0; j<i; j++) { //输出data数组(即c:\da.txt文件)中保存的数字.
cout<<data[j]<<'\t';
}
return 0;
}
第3个回答  推荐于2017-09-12
#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(int t=1;t<2;t++)
{
fout<<s[k][t];
}
}

}

这个就是了本回答被提问者采纳
相似回答