gpt4 book ai didi

c++ - 如何将 'fixed' floatfield 用于 istream/istringstream?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:47:38 28 4
gpt4 key购买 nike

C++ 有一个名为“fixed”的 I/O 操纵器,用于以固定(非科学)形式输入/输出 float 。它适用于输出,但我不明白如何让输入正常工作。

考虑这个例子:

#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::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

关于c++ - 如何将 'fixed' floatfield 用于 istream/istringstream?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29656640/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com