C++ 读取数据后的处理问题

大家好!是这样的,我有很多组数据,每组数据存在一个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;
}