C ++:在多向量中读取文件和存储数据

时间:2015-09-29 02:00:39

标签: c++ file vector

我正在尝试使用此格式读取数据文件

T1: I1,I2,I5 
T2: I2,I4 
T3: I2,I3 
T4: I1,I2,I4 
T5: I1,I3 
T6: I2,I3 
T7: I1,I3 
T8: I1,I2,I3,I5 
T9: I1,I2,I3 

我不想读第一列T1,T2,T3 ......,但是每一行都是我想要开始读取的数据集(空格'')并以每行结束以及如何我可以根据(逗号',')

分隔数据

我编写了这段代码,但它无法正常工作,无论如何都会读取第一列

string CItem;

// set of elements
set< CItem > CItemSet;

//Transactions
 CItemSet CTransaction;

// set of transactions
vector< CTransaction > CTransactionSet;

ifstream inFile(inFileName);
    if (!inFile)
    {
        cout << "Failed to open input file filename:." << inFileName;
    }

CTransactionSet transSet;
    CTransaction tran;
    string txtLine;
    // read every line from the stream
    while (getline(inFile, txtLine))
    {

        istringstream txtStream(txtLine);
        string txtElement;
        // read every element from the line that is seperated by commas
        // and put it into the vector or strings

        while (getline(txtStream, txtElement, ','))
        {
            if (txtElement == ": ") break;
            else tran.insert(txtElement);
        }
        transSet.push_back(tran);
    }

2 个答案:

答案 0 :(得分:0)

因为你有

CTransaction tran;

在第一个while循环之外,项目会不断添加到其中。将其移到while循环内。

CTransactionSet transSet;
string txtLine;
// read every line from the stream
while (getline(inFile, txtLine))
{
    CTransaction tran;

答案 1 :(得分:0)

我通过你所说的R Sahu来解决问题,但最重要的解决方案是使用.ignore所以我们不会在''之前阅读部分

 TestService.doWork().then()               
        .catch(errors.catch("Could not complete work!"));