将控制台输入(或字符串)分离为两个int变量的优雅方式是什么?C++单独输入到各种变量中
输入格式:a - bx
- a,b是整数总是。
- x可以忽略。
结果:
int1 = a;
int2 = -b;
理解任何提示。
将控制台输入(或字符串)分离为两个int变量的优雅方式是什么?C++单独输入到各种变量中
输入格式:a - bx
结果:
int1 = a;
int2 = -b;
理解任何提示。
准确假设的形式表示:
int a, b;
std::string op;
std::cin >> a >> op >> b;
if (op == "-") b = -b;
注意,这是不稳健。它会将除-
以外的任何内容视为加号,并且将绝对地识别任何以由非空白字符分隔的数字对开始的输入。
如果输入是: - a - bi? – xBlue
然后它不会工作。如果你想要一个更强大的解决方案,你需要构建一个小的解析器。 –
将字符串标记并解析为数学方程。
使用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.谨防上述代码中的错误:我只证明它是正确的,没有尝试过。
类似于:http://stackoverflow.com/questions/1806074/c-extract-polynomial-coefficients – HostileFork