我正试图从字符串中获取浮点数。 我的意思是从文本文件中逐行读取并从一行中获取浮点数。我找到了如何逐行阅读,但我无法将字符串拆分为浮点数。 这是一个示例输入文件:
10,10,18,18.1
7,3,10,14.2
3,3,5.3,5
我看过sscanf,但我不能这样做。有什么想法吗?
答案 0 :(得分:8)
根据多年的经验,我发现scanf不太可能完全符合您的要求。快速测试程序是可以的。
一种可能性是使用Str.split
:
let floats_of_string s =
List.map float_of_string (Str.split (Str.regexp "[, \t]+") s)
如果要检测无效输入,可能需要使正则表达式更紧密。
答案 1 :(得分:6)
仔细阅读手册以了解scanf格式的工作原理 - 它有一些怪癖,但背后有一个原因。
"%f , %f , %f , %f %!"