我想從字符串中獲取浮點數。 我的意思是從文本文件逐行讀取並從一行中獲取浮點數。我發現如何逐行讀取,但是我無法將字符串拆分爲浮點數。 下面是一個例子輸入文件:ocaml字符串到4浮點數
10,10,18,18.1
7,3,10,14.2
3,3,5.3,5
我已經看了sscanf,但我做不到。任何想法?
我想從字符串中獲取浮點數。 我的意思是從文本文件逐行讀取並從一行中獲取浮點數。我發現如何逐行讀取,但是我無法將字符串拆分爲浮點數。 下面是一個例子輸入文件:ocaml字符串到4浮點數
10,10,18,18.1
7,3,10,14.2
3,3,5.3,5
我已經看了sscanf,但我做不到。任何想法?
根據多年的經驗,我發現scanf不太可能完全按照您的要求進行。一個快速測試程序是可以的。
一種可能性是使用Str.split
:
let floats_of_string s =
List.map float_of_string (Str.split (Str.regexp "[, \t]+") s)
您可能需要使正則表達式有點緊張,如果你要檢測無效的輸入。
請仔細閱讀本手冊以瞭解scanf格式的工作原理 - 它有一些怪癖,但背後有一個原因。
"%f , %f , %f , %f %!"
該解決方案適用於Scanf.sscanf :-) – cago 2012-03-09 11:30:42