读取逗号分隔数据从字符串到结构,忽略某些字段

时间:2014-10-01 09:02:33

标签: c++ parsing struct stream

关于数据:

  • 字段以逗号','
  • 分隔
  • 总是有一定数量的字段(在我的情况下为33)
  • 字段始终采用相同的顺序
  • 数据属于不同类型,以ASCII格式表示。我知道这些类型
  • 有些字段总是空的,有些字段总是被忽略(不是有用的数据)

数据示例:

AnIdentifier,1,G,2014-10-01,11:00,,,3,7555,1,14535,1 .. etc

我想知道以C ++方式将这些数据读入结构的最佳方法是什么。我之前使用过sscanf,但我认为调用的格式参数变得相当大而且混乱。

我还尝试将字符串拆分为向量中的标记,然后使用向量中的值逐个设置结构中的值,但之后我没有很好的自动数据转换。

我看到了重载>>的示例结构中的运算符:

struct MyDataStruct
{
    std::string Id;
    char D;
    char S;
    std::string Date; // Preferably these could be combined
    std::string Time; // to a time_t?
    bool Running;
    int Runtime;
    ...
    ...

    friend std::istream &operator>>(std::istream &is, MyDataStruct &ds) { 
        return is >> Id >> D >> S >> Date >> Time >> Running >> Runtime ...
    }
}

我的C ++知识是有限的(习惯于C#),所以当我在阅读结构时想要忽略的字段时,我开始挣扎。在阅读is之后,我希望在阅读Time之前跳过Running中的5个字段。

并说我希望用time_t而不是两个字符串DateTime(它们在接收数据中表示的方式)来表示时间戳,这可以直接在运算符中完成读入结构时会超载吗?

0 个答案:

没有答案