0
#include <iostream>
#include <string>
#include <sstream>
int main() {
std::istringstream iss;
iss.str("[email protected]");
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
另外,我不知道是否有什么方法可以检测出错误范围。
您可能对['boost :: lexical_cast']感兴趣(http://www.boost.org/doc/libs/1_63_0/doc/html/boost_lexical_cast/synopsis.html#boost_lexical_cast.synopsis.lexical_cast)。 – Angew
@Angew,我需要依赖于语言环境的铸造而不需要设置全局语言环境,因此我选择了基于流的解决方案。 – triclosan
你可能想要使用'iss >> result >> std :: ws;'如果它有leagal有尾随空格。否则,我认为这是一样好。 – Galik