如何解决如何忽略正在阅读的行中某个位置的单词?
HEX_NUM CHAR HEX_NUM
我的代码是
stringstream s( line );
s >> std::hex >> addr >> letter >> std::hex >> target ;
但是,我只想获取 CHAR 部分(无需创建变量 addr
和 target
)。我该如何重写代码的第二行?
解决方法
如果输入行严格遵循你的模式(行中只有两个空格,并且两个空格之间有单词),那么我们可以简单地使用std::string::find
和std::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 举报,一经查实,本站将立刻删除。