错误处理铸造与弦乐的铸造双重

Error handling casting to double with stringstream

本文关键字:处理 错误      更新时间:2023-10-16
#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

是否有更好的解决方案可以检查所有字符是否已经处理过?

update

另外,我想知道是否有任何方法可以检测错误。

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

由于字符串流尚未到达流的末尾。eof()显然是错误的,此if()条件将评估为true。

结果是正确的:并非所有字符都已处理过。