Конечно, вы можете сделать свой собственный тип result
, а затем иметь собственный оператор извлечения, который читает из потока строк так, как вы хотите:
struct result {
double val;
bool err;
std::string err_val;
};
std::istringstream& operator>>(std::istringstream &iss, result &r) {
double lhs, rhs;
char op;
//Should probably add some check to make sure this read happens okay...
iss >> lhs >> op >> rhs;
if (op == '+') {
r.val = lhs + rhs;
r.err = false;
} else {
r.err = true;
r.err_val = "I can only handle addition!";
}
return iss;
}
int main() {
std::istringstream iss("1+2");
result res;
iss >> res;
std::cout << "Result is: " << res.val << std::endl;
return 0;
}
Смотрите его здесь: https://ideone.com/LKAlag