c++按行读取txt

    xiaoxiao2021-12-02  38

    前两天简单的处理了一些数据,记录一下。

    目的是取出一个txt文件(wavMaxMinIndex_appear.txt)中6的倍数行的数据,存入一个新的txt(numbers_between_maxMin.txt)文件,然后对此文件按行读入到一个vector中,对齐进行处理。

    自己比较渣,编程有点水,什么方便就用什么了,所以分步进行。

    前一部分采用python处理,代码如下:

    #-*-coding:utf-8-*- fl=open('wavMaxMinIndex_appear.txt','r') oddLine=open('numbers_between_maxMin.txt','w') i=1 for line in fl.readlines(): if i%6 == 0: #print(line) oddLine.write(line) i += 1 else: i += 1 fl.close() oddLine.close() 得到如下图所示的数据格式:

    21 40 41 40 45 27 12 20 20  28 20 20 18 38 77 52 27  43 33 39 99 40  28 28 35 19 45 27 50 26 11  106 76 38 

    后一部分用c++处理,代码如下:

    #include <iostream> #include <vector> #include <fstream> using namespace std; vector<int> InputDataToVector(); vector<int> InputDataToVector() { vector<int> p; ifstream infile("numbers_between_maxMin.txt"); int number; while(! infile.eof()) { infile >> number; p.push_back(number); } return p; } int main() { vector<int> res; res = InputDataToVector(); res.pop_back(); int count[6] = {0}; for(int i=0; i<res.size(); i++) { cout << res[i] << " "; if(res[i]>=0 && res[i]<20) count[0]++; else if(res[i]>=20 && res[i]<40) count[1]++; else if(res[i]>=40 && res[i]<60) count[2]++; else if(res[i]>=60 && res[i]<80) count[3]++; else if(res[i]>=80 && res[i]<100) count[4]++; else count[5]++; } cout << endl; cout << "一共有"<< res.size()+104 << "个极值点" << endl; cout << "一共有"<< res.size() << "个区间段" << endl; cout << "经过统计,在0-20个数据点的区间有" << count[0] << "个" <<endl; cout << "经过统计,在20-40个数据点的区间有" << count[1] << "个" <<endl; cout << "经过统计,在40-60个数据点的区间有" << count[2] << "个" <<endl; cout << "经过统计,在60-80个数据点的区间有" << count[3] << "个" <<endl; cout << "经过统计,在80-100个数据点的区间有" << count[4] << "个" <<endl; cout << "经过统计,在100个以及100个以上数据点的区间有" << count[5] << "个" <<endl; }

    得到结果,如下图:

    改进:将文件名直接作为string参数,如下:

    vector<float> InputDataToVector(string s) { vector<float> p; ifstream infile(s.c_str()); float number; while(! infile.eof()) { infile >> number; p.push_back(number); } return p; }

    转载请注明原文地址: https://ju.6miu.com/read-679753.html

    最新回复(0)