微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何忽略正在阅读的行中某个位置的单词?

如何解决如何忽略正在阅读的行中某个位置的单词?

我的代码首先打开文件并从中获取每一行,每一行采用以下形式:

HEX_NUM CHAR HEX_NUM

我的代码

stringstream s( line );
s >> std::hex >> addr >> letter >> std::hex >> target ; 

但是,我只想获取 CHAR 部分(无需创建变量 addrtarget)。我该如何重写代码的第二行?

解决方法

如果输入行严格遵循你的模式(行中只有两个空格,并且两个空格之间有单词),那么我们可以简单地使用std::string::findstd::string::rfind来精确中间部分.

#include <iostream>
#include <string>

int main() {
  std::string str;
  while (std::getline(std::cin,str)) {
    auto l = str.find(' ');
    auto r = str.rfind(' ');
    if (l < r) {
      std::cout << str.substr(l + 1,r - l) << std::endl;
    }
  }
}

但实际上我们要处理更复杂的格式,那么我们可以选择

  • 编写正则字符串以提取想要的部分
  • 手动编写解析器,有点费时
  • 使用简单的库 boost::spirit
  • 使用一些框架,如 ANTLR

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。