文字列から浮動小数点数を取得しようとしています。 テキストファイルから1行ずつ読み込み、1行から浮動小数点数を取得することを意味します。行ごとに読み込む方法を見つけましたが、文字列を浮動小数点に分割できませんでした。 、私が見てきた10,14.2ocaml文字列を4つの浮動小数点に変換する
3,3,5.3,5
10,10,18,18.1
7,3: ここでは例の入力ファイルでありますsscanfしかし、私はそれを行うことができませんでした。何か案が?
文字列から浮動小数点数を取得しようとしています。 テキストファイルから1行ずつ読み込み、1行から浮動小数点数を取得することを意味します。行ごとに読み込む方法を見つけましたが、文字列を浮動小数点に分割できませんでした。 、私が見てきた10,14.2ocaml文字列を4つの浮動小数点に変換する
3,3,5.3,5
10,10,18,18.1
7,3: ここでは例の入力ファイルであります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