我遇到了将float转换为字符串的问题,这to_string
对于我来说太慢了,因为我的数据可能涉及数百万个float。
我已经有关于如何快速写出这些数据的解决方案。
但是,解决了这个问题后,我很快意识到,将float转换为string会产生很大的影响。
那么,除了使用其他非标准库之外,还有其他想法或解决方案吗?
要想到的一种优化是不直接使用to_string,它每次调用时都会创建一个新字符串。您可能最终也会复制该字符串,效率不高。
您可以做的是分配一个足以容纳所有所需字符串表示形式的char缓冲区,然后使用printf
http://www.cplusplus.com/reference/cstdio/printf/
一直重复使用相同的缓冲区。如果将浮点数的精度限制为固定的小数位数,则可以计算浮点数在数组中所代表的偏移量。
例如,如果我们只有一个值数组:
index = 1;
float f = value[index];
//corrresponding 6 chars float
const char* s = char_array[index*1];
//the representation will start at position 6, and it will be null terminated so you can use it as a string
为了澄清起见,您的char_array将如下所示:
1.2000\02.4324\0...
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句