C++ 有一个名为“fixed”的 I/O 操纵器,用于以固定(非科学)形式输入/输出浮点数。它对于输出工作正常,但我不明白如何让输入正常工作。
考虑这个例子:
#include <sstream>
#include <iostream>
using namespace std;
int main() {
double value;
istringstream("1.4e1") >> fixed >> value;
cout << value << endl;
}
在我看来,它应该像这样工作。输入流有一些字符串。当我们申请时fixed
操纵器并尝试读取双精度/浮点数,它应该停在不是数字或点的第一个字符上(不接受第二/第三/更多次点)。所以,正确的输出是1.4
(当我们遇到'e'
).
相反,此代码输出14
。为什么?它是如何运作的以及其目的是什么fixed
对于输入流?如何从输入流中读取双精度值并停止在'e'
(将其保留在输入流中)?
你应该使用 std::scientific
我尝试这样:
#include <sstream>
#include <iostream>
using namespace std;
int main() {
double value;
cin >> std::fixed>> std::scientific >> value;
cout << std::scientific<<value << endl;
}
输入:1.4e1
输出:1.400000e+01
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)