使用 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()
条件将计算为真。
结果正确:未处理所有字符。
#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()
条件将计算为真。
结果正确:未处理所有字符。