ocaml字符串到4个浮点数

时间:2012-03-09 00:16:01

标签: string floating-point ocaml

我正试图从字符串中获取浮点数。 我的意思是从文本文件中逐行读取并从一行中获取浮点数。我找到了如何逐行阅读,但我无法将字符串拆分为浮点数。 这是一个示例输入文件:

10,10,18,18.1

7,3,10,14.2

3,3,5.3,5

我看过sscanf,但我不能这样做。有什么想法吗?

2 个答案:

答案 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 %!"