【问题标题】:Reading files with multiple delimiters in c++在 C++ 中读取具有多个分隔符的文件
【发布时间】:2012-05-05 17:54:57
【问题描述】:

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

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

代码如下:

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 字数据。该行没有被视为该行是单个字符串,它根本不在数组中。

编辑:添加更多代码

【问题讨论】:

  • 好吧,我发现 >> 做了我想要的,我用 getline() 使事情复杂化了 2 天。我实际上仍然不确定为什么我上面的代码不起作用。我还有几个小时无法回答我自己的问题,所以它仍然会在一段时间内显示为未回答。

标签: c++ delimiter getline


【解决方案1】:

没关系,我发现“>>”可以代替 getline()。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-13
    • 2020-07-18
    • 2013-06-03
    • 1970-01-01
    • 2017-06-30
    • 2021-04-14
    相关资源
    最近更新 更多