在同一行的std :: cout中输入c ++

时间:2016-04-15 11:45:59

标签: c++

什么有效:

double a1;
a1 = 2+4;
std::cout << a1;

我想要的是:

double a1;
std::cin >> a1;
std::cout << a1;

但是当我输入2 + 4时,我得到输出2,然后是4,我希望它能够立即求和。

1 个答案:

答案 0 :(得分:2)

C ++不会神奇地为你做数学运算,你需要解析输入,检查错误并进行计算。对于简单的数学运算,您可以使用流操作,以使其更具进步性,我建议使用regexp,对于更多的高级语法,您需要解析器http://www.boost.org/doc/libs/1_59_0/libs/spirit/repository/example/qi/calc1_sr.cpp

std::regex pattern("(\\d+)\\s*(\\+)\\s*(\\d+)");
std::string line;
while (std::getline(std::cin, line)) {
  std::smatch sm;
  if (std::regex_match(line, sm, pattern)) {
    int val1 = std::stoi(sm[1]);
    std::string op = sm[2];
    int val2 = std::stoi(sm[3]);
    std::cout << (val1 + val2) << "\n";
  }
}