C ++ Tokenize字符串的一部分

时间:2016-07-24 15:32:41

标签: c++ tokenize

尝试用C ++标记一个字符串,该字符串是从文件中读取的,用逗号分隔,但我只需要每行的前3个数据。

例如: 线条看起来像这样:
140,152,2240,1,0,3:0:0:0:
156,72,2691,1,0,1:0:0:0:
356,72,3593,1,0,1:0:0:0:

但我只需要这些线的前3个数据。在这种情况下:
140,152,2240
156,72,2691
356,72,3593

我试图将这些数据添加到矢量中我只是不知道如何在前3个数据之后跳过从文件中读取一行。

这是我目前的代码:(默认情况下canPrint为真)

ifstream ifs;
        ifs.open("E:\\sample.txt");
        if (!ifs)
            cout << "Error reading file\n";
        else
            cout << "File loaded\n";



        int numlines = 0;
        int counter = 0;
        string tmp;

        while (getline(ifs, tmp))
        {
            //getline(ifs, tmp); // Saves the line in tmp.
            if (canPrint)
            {
                //getline(ifs, tmp);
                numlines++;

                // cout << tmp << endl; // Prints our tmp.
                vector<string> strings;
                vector<customdata> datalist;
                istringstream f(tmp);
                string s;
                while (getline(f, s, ',')) {
                    cout << s << " ";
                    strings.push_back(s);
                }
                cout << "\n";


            }

1 个答案:

答案 0 :(得分:1)

如何先检查向量的大小?也许像是

while (strings.size() < 3 && getline(f, s, ',')) { ... }