我正在使用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
。我在这里缺少什么吗?还是应该使用其他东西?
答案 0 :(得分:2)
#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来控制要确切看到的位数。
您不应混淆值和表示形式。