首页 > 解决方案 > 使用 boost 或 regex 分割这条线

问题描述

我是 C++ 新手,我正在努力拆分这个字符串。希望创建一个以书为键的多图。名词和“-=>>”之后的定义将是一对,动词及其定义也是如此。这是我似乎无法正确拆分的字符串:

book|noun -=>> A set of pages.|verb -=>> To arrange something on a particular date.
bookable|adjective -=>> Can be ordered.

这是我正在尝试的代码。我发现这段代码没有正确加载多图,因为当我打印 parts[0] 时,两个名称都被放入同一个索引中。似乎正则表达式是一个更简单的解决方案,但在过去几个小时内我需要一些帮助。

while (getline(myfile, line)) {
   string delimiters("|-=>>.");

   vector<string> parts;
   boost::split(parts, line, boost::is_any_of(delimiters));

   name = parts[0];
   partOfSpeech = parts[1];
   definition = parts[2];

   dictionary.emplace(make_pair(name, make_pair(partOfSpeech, definition)));
}

非常感谢任何指导或反馈

标签: c++boostsplit

解决方案


首先将您的行拆分为|. 第一个结果部分是你的名字。然后通过所有其他结果部分并将它们分成两半-=>>。这将为您提供配对的前半部分(partOfSpeech)和后半部分(定义)。


推荐阅读