istream操纵者阅读双倍

时间:2015-03-29 11:49:55

标签: c++ istream istringstream manipulators

我需要从istringstream读取像14.3925125E这样的数字作为格式化输入的一部分。 E表示东方,而不是科学记数法 当我尝试使用input >> double >> char时,看起来该流将数字视为错误的科学而失败。我尝试过操纵者std::fixedstd::dec,但没有帮助。还有其他我可以使用的东西吗?

1 个答案:

答案 0 :(得分:1)

操纵者不会这样做,因为E是浮点值如何表示为文本的一部分。例如,14.25E2代表值1425.00

您需要提取子字符串并分别解析它们。没有错误检查,像....

std::string input("14.3925125E");
std::string substring = input.substr(0, input.find('E'));
std::istringstream str(substring);
str >> double_value;