C ++将输入分成各种变量

时间:2011-11-24 20:59:17

标签: c++ string parsing tokenize

将控制台输入(或字符串)分成两个int变量的优雅方法是什么?

输入格式:a - bx

  • a,b总是整数。
  • x可以忽略。

结果:

int1 = a; 
int2 = -b;

任何提示都表示赞赏。

3 个答案:

答案 0 :(得分:1)

Tokenize并将字符串解析为数学方程式。

答案 1 :(得分:1)

假设确切地说明了表格:

int a, b;
std::string op;
std::cin >> a >> op >> b;
if (op == "-") b = -b;

请注意,这并不健全。它会将-以外的任何内容视为一个加号,并且绝对会识别任何以一对非空格blob分隔的数字开头的输入。

答案 2 :(得分:0)

在这里使用C ++ 11和AX是一种可能的解析器:

#include <axe.h>
#include <iostream>

template<class I>
void example(I i1, I i2)
{
    int a, b;
    auto space = axe::r_lit(' ');
    auto rule = axe::r_udecimal(a) & *space & axe::r_decimal(b);
    (rule >> axe::e_ref([&](...) 
    { std::cout << "\na=" << a << ",b=" << b; }))
    (i1, i2);
}

int main()
{
    std::string str = "100 - 10i";
    example(str.begin(), str.end());
}

P.S。注意上面代码中的错误:我只是证明它是正确的,没有尝试过。