C++有一个名为'fixed'的I/O操纵器,以固定(非科学)形式输入/输出浮点数。它对输出正常工作,但我不明白如何让输入正常工作。如何为istream/istringstream使用'fixed'floatfield?
考虑这个例子:
#include <sstream>
#include <iostream>
using namespace std;
int main() {
double value;
istringstream("1.4e1") >> fixed >> value;
cout << value << endl;
}
在我看来,它应该像这样工作。输入流有一些字符串。当我们在其上应用fixed
机械手并尝试读取double/float时,它应停止在不是数字或点的第一个字符上(点不能被接受的次数/次数/次数)。所以,正确的输出将是1.4
(当我们遇到'e'
时,我们停止处理输入)。这个代码输出14
。为什么?它如何工作以及输入流的fixed
的用途是什么?我怎样才能从输入流中读取一个double并在'e'
处停留(将其保留在输入流中)?
'std :: fixed'没有输入流的目的。算术格式化操纵器都不能用于输入流。 – 0x499602D2
@ 0x499602D2好的,谢谢。解决方案呢?有没有简单的方法(无需编写解析器)读取double,在输入流中保留'e'? – JIghtuse
显然没有简单的方法。我正在浏览提取器的代码,并且似乎没有办法阻止解析器使用'e'或'E'。你必须把它读入一个字符串并解析自己。 – 0x499602D2