如何从字符串中获取浮点值?

时间:2019-05-04 20:37:49

标签: c++ string

我正在使用istringstream头文件库中的<sstream>处理字符串,该字符串对 integer 值很好,但对 floats 却不起作用。对于以下代码,我得到的输出都是整数。

#include <iostream>
#include <sstream>
#include <string>

using std::istringstream;
using std::string;
using std::cout;

int main () 
{
    string a("1 2.0 3");

    istringstream my_stream(a);

    int n;
    float m, o;
    my_stream >> n >> m >> o;
    cout << n << "\n";
    cout << m << "\n";
    cout << o << "\n";
}

我希望m的输出为2.0,但是我得到的只是整数2。我在这里缺少什么吗?还是应该使用其他东西?

1 个答案:

答案 0 :(得分:2)

Here you go:

#include <iostream>
#include <sstream>
#include <string>
#include <iomanip> // << enable to control stream formatting

using std::istringstream;
using std::string;
using std::cout;

int main () 
{
    string a("1 2.0 3");

    istringstream my_stream(a);

    int n;
    float m, o;
    my_stream >> n >> m >> o;
    cout << std::fixed; // << One way to control how many digits are outputted
    cout << n << "\n";
    cout << m << "\n";
    cout << o << "\n";
}

输出

1
2.000000
3.000000

您可以使用更多stream formatting parameters来控制要确切看到的位数。
您不应混淆值和表示形式。