2011-11-24 34 views
0

将控制台输入(或字符串)分离为两个int变量的优雅方式是什么?C++单独输入到各种变量中

输入格式:a - bx

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

结果:

int1 = a; 
int2 = -b; 

理解任何提示。

+0

类似于:http://stackoverflow.com/questions/1806074/c-extract-polynomial-coefficients – HostileFork

回答

1

准确假设的形式表示:

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

注意,这是不稳健。它会将除-以外的任何内容视为加号,并且将绝对地识别任何以由非空白字符分隔的数字对开始的输入。

+0

如果输入是: - a - bi? – xBlue

+1

然后它不会工作。如果你想要一个更强大的解决方案,你需要构建一个小的解析器。 –

1

将字符串标记并解析为数学方程。

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.谨防上述代码中的错误:我只证明它是正确的,没有尝试过。