在c ++中读取具有多个分隔符的文件

时间:2012-04-25 03:40:07

标签: c++ delimiter getline

我有一个要阅读的文本文件,但它没有格式化(故意)。

我必须将数据排序为结构,并且数据类型不同,所以首先我将它们排序为数组,以便我可以根据顺序将它们排序到结构中。 我创建了一个代码来获取一行,然后测试它是否有空格,如果有空格,则使用''作为分隔符再次扫描它。如果没有,它只是将字符串存储到数组中。

以下是代码:

int nextw(ifstream &file, string array[]){

    string line;
    string token;
    stringstream iss;
    size_t foundspace;

    int i = 0;

    while(getline(file, line)){
            iss << line;

            foundspace = line.find(" ");
            if(foundspace != string::npos){
                    while(getline(iss, token, ' ')){
                            array[i++] = token;
                    }
            }
            else
                    array[i++] = line;
    }
    return i;
}

返回数组的计数。

问题是它会跳过一行数据。 例如,我有:

data data data data data
data
data
data
data
data
skipped_data skipped_data
data
data
etc...

仅跳过具有空格分隔符的2个字数据的单行。该行未被视为该行是单个字符串,它根本不在数组中。

编辑:添加更多代码

1 个答案:

答案 0 :(得分:0)

没关系,我想出了“&gt;&gt;”而不是getline()。

相关问题