大家好!是这样的,我有很多组数据,每组数据存在一个txt里,txt里是两列,一列x,一列y、
现在我要处理这些数据,需要把每组数据乘上一些常数,然后将这么多组数据,将相同x的y都加起来。
我现在的思路,是每组数据存进二维数组里,getline读了之后分隔,存进数组,感觉有点麻烦,想问问大家有什么别的思路吗?
还有,我想用循环来存入数组,但是数组的名字现在在循环里没法按照顺序生成……这里有点卡主了……
C++ 读取数据后的处理问题
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
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; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 GDI处理通道视频时总是带有白色锯齿
- ¥20 用雷电模拟器安装百达屋apk一直闪退
- ¥15 算能科技20240506咨询(拒绝大模型回答)
- ¥15 自适应 AR 模型 参数估计Matlab程序
- ¥100 角动量包络面如何用MATLAB绘制
- ¥15 merge函数占用内存过大
- ¥15 Revit2020下载问题
- ¥15 使用EMD去噪处理RML2016数据集时候的原理
- ¥15 神经网络预测均方误差很小 但是图像上看着差别太大
- ¥15 单片机无法进入HAL_TIM_PWM_PulseFinishedCallback回调函数