将一组数据拆分为不同的类别

split a set of data into different category

本文关键字:拆分 数据 一组      更新时间:2023-10-16

我有一个.txt文件,它是一组数据(2000行(示例,如下所示

时间,价格($(,

数量,价值($(,条件

10/10/2013 04:57:27 PM,5.81,5000,29050.00,LT XT

2013/10/10 04:48:05 PM,5.81,62728,364449.68,SX XT

2013/10/10 04:10:33 下午,5.81,451,2620.31,

2013/10/10 04:10:33 下午,5.81,5000,29050.00,

如何将它们分成每个类别的块?例:

体积 - (卷的全部数据(

价格 - (价格的完整数据(

我知道需要使用分隔符进行拆分,但我不知道该怎么做(需要稍微推动编码(。我正在使用向量按行存储这些数据集。

任何帮助将不胜感激。谢谢

#include<iostream>
#include<fstream>
#include<string>
#include<vector>
#include<sstream>
//#include "Header.h"
using namespace std;
int main()
{
    //open file
    ifstream inFile("Course_of_sale.txt", ifstream::in);
// if can read
if (inFile.good())
{
    std::vector<string> strVector;
    //create vector 
    string line;
    //read and push to back 
    while (getline(inFile, line))
    {
        getline(inFile, line);
        strVector.push_back(line);
    }
    vector<string>::iterator it;
    for (it = strVector.begin(); it < strVector.end(); it++)
    {
        cout << *it << endl;
    }
    stringstream ss(line);
    string field;
    while (getline(ss, field, ','))
    {
        getline(inFile, line);
        strVector.push_back(line);
    }
    cout << "nSize : " << strVector.capacity() << " elements n";
}
system("Pause");

目前只能设法从文件读取。(此代码是从 SO 复制的(

这是我

的尝试。

#include <iostream>
#include <sstream>
#include <fstream>
#include <vector>
#include <string>
struct entry {
    int time;
    double price;
    int volume;
    double value;
    std::string condition;
    entry(const int ti, const double pr, const int vo, const double va, const std::string &co):
        time{ ti }, price{ pr }, volume{ vo }, value{ va }, condition{ co }
    {   }
};
std::vector<std::string> &split(const std::string &str, const char delim, std::vector<std::string> &ret) {
    std::stringstream ss(str);
    std::string tmp;
    while (std::getline(ss, tmp, delim))
        ret.push_back(tmp);
    return ret;
}
int main(int argc, char **argv) {
    std::vector<entry> vec;
    std::ifstream file("test.txt");
    std::string line;
    std::vector<std::string> str;
    while (std::getline(file, line)) {
        std::vector<std::string>().swap(str);
        split(line, ',', str);
        std::string tmp{ "" };
        if (str.size() > 4)
            std::string tmp(str.at(4));
        entry e(
            std::stoi(str.at(0)),
            std::stod(str.at(1)),
            std::stoi(str.at(2)),
            std::stod(str.at(3)),
            tmp
        );
        vec.push_back(e);
    }
    system("pause");
    return 0;
}

只有当你离开条件时,它才是容错的。