高分求C++怎么读取这样的txt

寒沙胜雪 2011-09-10 10:48:11
txt中的内容:
1 234.34 543.12
2 325.3 213.2
3 342.3 124.5
4.............
..............

这种txt的文件,我想读取它的每一列,放到一个数组里面。怎么可以做到啊?谢谢各位大哥了。
...全文
228 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhousmith2011 2011-09-11
  • 打赏
  • 举报
回复
有意思!
beef9999 2011-09-11
  • 打赏
  • 举报
回复
不结贴的楼主,哎,无语
AleTiff 2011-09-11
  • 打赏
  • 举报
回复
用这个吧:

int myI;
float myf1, myf2;

sscanf(string, "%d %f %f", &myI, &myf1, &myf2);

式中:
string 就是一行一行读出来的行的数据的文本
中间的引号里的是格式化模式,其实是指明文本的数据格式
最后,就是要函数把指明的格式数据依次放到定义好的变量里

应该很明白吧?需要包含头文件 stdio.h
安生 2011-09-10
  • 打赏
  • 举报
回复
可以动态分配吧。

//用一个指针的指针来来存放每行的首地址,在用一个数组来存放数据。
double dDate[][3];
double** pDate=dDate;//用来存放每行的首地址。
int count//用来计数。
while(!file.eof())
{
if(count%3 < 2)
{
infile>>(*pDate)[count%3];
}
else
{
infile>>(*pDate)[count%3];
pDate++;
}
}

请指教。
jackyjkchen 2011-09-10
  • 打赏
  • 举报
回复
楼主这种数据,其实最适合fscanf

如果想要效率,最好一次性用fread从文件读完,然后sscanf解析
huangdi7922 2011-09-10
  • 打赏
  • 举报
回复
看不懂,我一般fscanf读
小墨1527 2011-09-10
  • 打赏
  • 举报
回复
5楼真是强人!
maoxing63570 2011-09-10
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 demon__hunter 的回复:]

C/C++ code

#include <iomanip>
#include <iostream>
#include <algorithm>
#include <fstream>
#include <vector>
using namespace std;
int main()
{
vector<double> result;
copy(istream_iterator<d……
[/Quote]
膜拜楼上
机智的呆呆 2011-09-10
  • 打赏
  • 举报
回复

#include <iomanip>
#include <iostream>
#include <algorithm>
#include <fstream>
#include <vector>
using namespace std;
int main()
{
vector<double> result;
copy(istream_iterator<double>(ifstream("11.txt")),istream_iterator<double>(),back_inserter(result));
vector<double> result1;
vector<double> result2;
vector<double> result3;
for (vector<double>::iterator it=result.begin();it!=result.end();it+=3)
{
result1.push_back(*it);
result2.push_back(*(it+1));
result3.push_back(*(it+2));
}
copy(result1.begin(),result1.end(),ostream_iterator<double>(cout,"\n"));
copy(result2.begin(),result2.end(),ostream_iterator<double>(cout,"\n"));
copy(result3.begin(),result3.end(),ostream_iterator<double>(cout,"\n"));
system("pause");
}
maoxing63570 2011-09-10
  • 打赏
  • 举报
回复

#include <fstream>
#include <iostream>
using namespace std;
int main()
{
ifstream inFile("maoxin.txt");
int seed[3]={0};
double num1[3]={0.0};
double num2[3]={0.0};

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

inFile>>seed[i];
inFile>>num1[i];
inFile>>num2[i];

}

for(int i=0;i<3;++i)
cout<<seed[i]<<" "<<num1[i]<<" "<<num2[i]<<endl;

inFile.clear();
inFile.close();
system("pause");
return 0;
}

这样可以?
Ol_lO 2011-09-10
  • 打赏
  • 举报
回复
参考http://zhidao.baidu.com/question/217125718.html
寒沙胜雪 2011-09-10
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 ol_lo 的回复:]
为每一列准备一个数组,能满足你的需求么
[/Quote]
具体如何做到啊?fopen fread fseek ftell这样的函数,怎么判断每一列啊,以空白处分割开每列
Ol_lO 2011-09-10
  • 打赏
  • 举报
回复
为每一列准备一个数组,能满足你的需求么
AndyZhang 2011-09-10
  • 打赏
  • 举报
回复
楼主确定输入的格式一定是那样的么?如果是,可以这样读,很方便
FILE * fp = freopen("XXX.txt","r",stdin);

直接scanf("%d %lf %lf",& XXX , & XXX, &XXX);
就行啦
很简单
beef9999 2011-09-10
  • 打赏
  • 举报
回复
5楼这样可以,但是对于不知道多少行的文件就没法操作了。

给你一个最通用的办法。使用用流处理类fstream打开文件(具体代码上网查),用getline函数获取整行的字符串传给某个string对象,getline(fs,stringName);

然后再用while 判断 空格的出现,将一个string分为2个小的string。

至于你说的用数组保存,我看就算了吧。简单点,和5楼的方法一样,用容器 vector <string>

行了,给分吧。


querdaizhi 2011-09-10
  • 打赏
  • 举报
回复


typedef struct
{
int n;
double a;
double b;
}array;

array set[100]; //数组大小可以自己改变。
int i=0;
ifstream infile("input.txt");
while(infile >> set[i].n >> set[i].a >> set[i].b)
{
i++;
}
独酌逸醉 2011-09-10
  • 打赏
  • 举报
回复
文本文件能定位??
bjbjbh 2011-09-10
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 maoxing63570 的回复:]
C/C++ code


#include <fstream>
#include <iostream>
using namespace std;
int main()
{
ifstream inFile("maoxin.txt");
int seed[3]={0};
double num1[3]={0.0};
double num2[3]={0……
[/Quote]
++1

64,637

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧