大家好!是这样的,我有很多组数据,每组数据存在一个txt里,txt里是两列,一列x,一列y、
现在我要处理这些数据,需要把每组数据乘上一些常数,然后将这么多组数据,将相同x的y都加起来。
我现在的思路,是每组数据存进二维数组里,getline读了之后分隔,存进数组,感觉有点麻烦,想问问大家有什么别的思路吗?
还有,我想用循环来存入数组,但是数组的名字现在在循环里没法按照顺序生成……这里有点卡主了……
如果只有两列,很好办,字符串分析是最好的方法。
如果更多列,可以参考下面我写的方法
望采纳!
如果还要将字符串转整数,后面在评论里说就行了
有一个很好的方法,在不知道有多少行的时候可以这样做
如数据:
//1 2 4 2
//0 3 2 1
//0 3 2 3
//9 2 3 4
此时不知道几行几列,可以这样操作(while getline和stringstream):
#include<bits/stdc++.h>
using namespace std;
string a[1009][1009];
int main( ) {
ifstream fin("test.txt");//假设文件名是test.txt
string s;
int n=0;
int maxM=-1;//用来存储最大的列数
while(getline(fin,s)) {//当能继续输入时,会继续输入,返回1;当不能时,停止输入,返回
n++;//新的一行
//此时我们用stringstream对s进行分解,很简单,可以上网搜索一些相关博客
stringstream ss;//每次要重新定义或清空,否则会出错
int m=0;//新的一列
while (ss >>a[n][++m]);//如果能继续分解,返回1,如果不能,返回0,保存在数组中,这边压了个行,效果一样
maxM=max(maxM,m);//记录最大列数
}
fin.close();//输入结束
cout<<"n="<<n<<",m="<<maxM<<endl;
for(int i=1;i<=n;i++)
for(int j=1;j<=maxM;j++)
if(a[i][j].size()!=0)//串不为空
cout<<a[i][j];
return 0;
}