2012-03-09 55 views
6

我想从字符串中获取浮点数。 我的意思是从文本文件逐行读取并从一行中获取浮点数。我发现如何逐行读取,但是我无法将字符串拆分为浮点数。 下面是一个例子输入文件:ocaml字符串到4浮点数

10,10,18,18.1

7,3,10,14.2

3,3,5.3,5

我已经看了sscanf,但我做不到。任何想法?

回答

8

根据多年的经验,我发现scanf不太可能完全按照您的要求进行。一个快速测试程序是可以的。

一种可能性是使用Str.split

let floats_of_string s = 
    List.map float_of_string (Str.split (Str.regexp "[, \t]+") s) 

您可能需要使正则表达式有点紧张,如果你要检测无效的输入。

6

请仔细阅读本手册以了解scanf格式的工作原理 - 它有一些怪癖,但背后有一个原因。

"%f , %f , %f , %f %!" 
+1

该解决方案适用于Scanf.sscanf :-) – cago 2012-03-09 11:30:42