如何理解std :: istringstream的结果?

时间:2016-10-19 03:45:26

标签: c++

int x;
float f;
std::string s = "3.7";

std::istringstream is(s);
is >> x >> f;

为什么'x'和'f'的结果是3和0.7?
当我使用

is >> f;

'f'的结果是3.7。

1 个答案:

答案 0 :(得分:0)

istreamstream从流中提取尽可能多的字符fit into the target datatype(参见算术类型)。另一个停止条件是空格char。

因此,如果您将代码更改为以下内容:

int x;
char c;
int f;
std::string s = "3.7";

std::istringstream is(s);
is >> x;
is >> c;
is >> f;

std::cout << x << std::endl;
std::cout << c << std::endl;
std::cout << f << std::endl;

这将导致以下输出:

3
.
7