std :: stof解析整个字符串还是停在第一个空格/换行符处?

时间:2018-02-05 19:20:36

标签: c++

修改

转而使用atof,因为它不会在这种情况下生成副本。从查看两个实现,它应该在第一个无效符号后停止。

原始

考虑这个简单的设置:

const char* string = "1.0 2.0 3.0 4.0";
float float1 = stof(string);
float float2 = stof(string + 4);
float float3 = stof(string + 8);

在这种情况下,stof会一直解析到结束还是在初始位置后的第一个空格处停止?

我需要解析一个编码成字符串的很长的浮点列表,所以我基本上需要知道是否必须将数字复制到sperate(小)缓冲区并在此缓冲区上调用stof,或者我可以使用stof as上方。

1 个答案:

答案 0 :(得分:0)

它丢弃前导空格并解析整个字符串。摘自std::stof参考(强调我的):

  

功能丢弃任何空格字符(由...确定)   std :: isspace())直到找到第一个非空白字符。然后呢   尽可能多个字符 以形成有效的浮点数   表示并将它们转换为浮点值。

对于使用string + 4string + 8表达式的情况,您要向函数提供"2.0 3.0 4.0""3.0 4.0"字符串。您还应该避免命名变量string