如何使用c++从文件中读入数据,存入数组中,在显示在屏幕上?例如文件中数据是 1.2,3.4,4, 3,4.56 2.56,7
使用文件输入流总是不行啊文件中的要求读入的数据是分行显示的,储存的数据是要可以直接运算的,不要是char,string类型的麻烦越简洁越好,最好只用文件流完成...
使用文件输入流总是不行啊
文件中的要求读入的数据是分行显示的 ,储存的数据是要可以直接运算的,不要是char,string类型的
麻烦越简洁越好,最好只用文件流完成 展开
文件中的要求读入的数据是分行显示的 ,储存的数据是要可以直接运算的,不要是char,string类型的
麻烦越简洁越好,最好只用文件流完成 展开
3个回答
展开全部
分隔符 逗号 空白 混合 使用,每行数据个数不等,比较麻烦,必须处理。
#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
#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
展开全部
#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);
}
#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);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我给你一个比较稍微罗嗦一些的,基本步骤就是先读入一行,然后按 “,”分割,然后存在向量中,打印输出。
#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;
}
#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;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询