一块炼气期的腐乳 2022-05-25 11:47 采纳率: 100%
浏览 36
已结题

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

大家好!是这样的,我有很多组数据,每组数据存在一个txt里,txt里是两列,一列x,一列y、
现在我要处理这些数据,需要把每组数据乘上一些常数,然后将这么多组数据,将相同x的y都加起来。
我现在的思路,是每组数据存进二维数组里,getline读了之后分隔,存进数组,感觉有点麻烦,想问问大家有什么别的思路吗?
还有,我想用循环来存入数组,但是数组的名字现在在循环里没法按照顺序生成……这里有点卡主了……

  • 写回答

1条回答 默认 最新

  • 20240357 2022-05-25 14:25
    关注

    如果只有两列,很好办,字符串分析是最好的方法。
    如果更多列,可以参考下面我写的方法
    望采纳!
    如果还要将字符串转整数,后面在评论里说就行了
    有一个很好的方法,在不知道有多少行的时候可以这样做
    如数据:

     //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;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 6月2日
  • 已采纳回答 5月25日
  • 创建了问题 5月25日

悬赏问题

  • ¥15 GDI处理通道视频时总是带有白色锯齿
  • ¥20 用雷电模拟器安装百达屋apk一直闪退
  • ¥15 算能科技20240506咨询(拒绝大模型回答)
  • ¥15 自适应 AR 模型 参数估计Matlab程序
  • ¥100 角动量包络面如何用MATLAB绘制
  • ¥15 merge函数占用内存过大
  • ¥15 Revit2020下载问题
  • ¥15 使用EMD去噪处理RML2016数据集时候的原理
  • ¥15 神经网络预测均方误差很小 但是图像上看着差别太大
  • ¥15 单片机无法进入HAL_TIM_PWM_PulseFinishedCallback回调函数