如何使用c++从文件中读入数据,存入数组中,在显示在屏幕上?例如文件中数据是 1.2,3.4,4, 3,4.56 2.56,7

使用文件输入流总是不行啊文件中的要求读入的数据是分行显示的,储存的数据是要可以直接运算的,不要是char,string类型的麻烦越简洁越好,最好只用文件流完成... 使用文件输入流总是不行啊
文件中的要求读入的数据是分行显示的 ,储存的数据是要可以直接运算的,不要是char,string类型的
麻烦越简洁越好,最好只用文件流完成
展开
 我来答
L_o_o_n_i_e
2010-10-16 · TA获得超过4.2万个赞
知道大有可为答主
回答量:8507
采纳率:38%
帮助的人:5117万
展开全部
分隔符 逗号 空白 混合 使用,每行数据个数不等,比较麻烦,必须处理。

#include<iostream>
#include <fstream>
#include <string>
using namespace std;
int main()
{
fstream fin("abc.txt");
string buff;
char c[256];
int i,n=0;
float v[100];
do {
fin >> buff;
// 处理
strcpy (c, buff.c_str());
for(i=0;i<256;i++) if (c[i]==',') c[i]=' ';
if ( sscanf(c,"%f",&v[n]) == 1) n++;
for(i=0;i<strlen(c);i++) if (c[i]==' ') { if (sscanf(c+i,"%f",&v[n])==1) n++;};
} while (!fin.eof());

for (i=0;i<n;i++) cout << v[i] << endl;
return 0;

}
===========
abc.txt 内容:
1.2,3.4,4, 3,4.56 2.56,7
3.4567
============
输出:
1.2
3.4
4
3
4.56
2.56
7
3.4567
qiugeen
2010-10-12 · TA获得超过210个赞
知道小有建树答主
回答量:207
采纳率:0%
帮助的人:172万
展开全部
#include <stdio.h>
#include<math.h>
void main()
{
double str[10][20]={{2.32,23.23,5.0,2.3,3,3.3,3.2},{23.23,5.5,23,3.4,34.3,3.32},{34.3,5,5,23,3.4,3.32,3.23}};
char strout[20][40];//字符串划分
char t[40];//读入字符串存储位置
double strcopy[10][20]={{0}};//最后输出数组
FILE *stream;
stream=fopen("text.txt","w+");
int i=0,j;
while(str[i][0]!=0)
{
j=0;
while(str[i][j]!=0)
{
fprintf(stream,"%.2f,",str[i][j]);
j++;
}
fprintf(stream,"\n");
i++;
}
fseek(stream,0L,SEEK_SET);
int h=0;
while(h!=3)//定义三行数据
{
fscanf(stream,"%s",t);
i=0;
j=0;

while(t[j]!='\0')
{
int k=0;
while(t[j]!=',')
{
strout[i][k]=t[j];
k++;
j++;
}
strout[i][k]='\0';
j++;
i++;
}
strout[i][0]='\0';//防止行上个数不同产生交错
i=0;
while(atof(strout[i])!=0)//字符转换为数值
{
strcopy[h][i]=atof(strout[i]);
i++;
}

h++;
}

for(h=0;h<3;h++)
{
j=0;
while(strcopy[h][j]!=0)
{
printf("%.2f ",strcopy[h][j]);
j++;
}
printf("\n");
}
fclose(stream);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
heroinhell
2010-10-12
知道答主
回答量:11
采纳率:0%
帮助的人:4.7万
展开全部
我给你一个比较稍微罗嗦一些的,基本步骤就是先读入一行,然后按 “,”分割,然后存在向量中,打印输出。
#include <iostream>
#include <string>
#include <fstream>

#include <vector>
using namespace std;

vector<string> splitEx(const string& src, string separate_character)
{
vector<string> strs;

int separate_characterLen = separate_character.size();//分割字符串的长度,这样就可以支持如“,,”多字符串的分隔符
int lastPosition = 0,index = -1;
while (-1 != (index = src.find(separate_character,lastPosition)))
{
strs.push_back(src.substr(lastPosition,index - lastPosition));
lastPosition = index + separate_characterLen;
}
string lastString = src.substr(lastPosition);//截取最后一个分隔符后的内容
if (!lastString.empty())
strs.push_back(lastString);//如果最后一个分隔符后还有内容就入队
return strs;
}

int main()
{

fstream fin("abc.txt");
strin string tmp;
del = ",";
while (getline(fin, tmp))
{

vector<string> strs = splitEx(tmp, del);
for ( unsigned int i = 0; i < strs.size(); i++)
{
cout << strs[i].c_str() << endl;
}
}
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式