问题描述
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