使用 stringstream 处理转换为 double 时出错

Error handling casting to double with stringstream

#include <iostream>
#include <string>
#include <sstream>

int main() {
  std::istringstream iss;
  iss.str("1.23@45");
  double result;
  iss >> result;
  std::cout << result << std::endl;

  if (!iss.eof() || iss.fail()) {
    std::cout << "error occurred" << std::endl;
  }
}

输出为

1.23
error occurred

有没有更好的方法来检查所有的字符是否都被处理了?

更新

此外,我想知道是否有任何方法可以检测到 超出范围 错误。

if (!iss.eof() || iss.fail())

因为字符串流还没有到达流的末尾。 eof() 显然是假的,这个 if() 条件将计算为真。

结果正确:未处理所有字符。