将控制台输入(或字符串)分成两个int变量的优雅方法是什么?
输入格式:a - bx
结果:
int1 = a;
int2 = -b;
任何提示都表示赞赏。
答案 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。注意上面代码中的错误:我只是证明它是正确的,没有尝试过。