次のPythonコードをC++で再現したいのですが、問題が発生しました。関数read_fileは、テキストファイルを読み取り、各行の最初の単語をテストして、それが整数であるかどうかを確認します。最初の単語が整数(4桁以上)の場合、その行のすべての単語が浮動小数点数としてリストzに追加されます。それ以外の場合、行は単に文字列としてリストに追加されます。リストのリスト(z)は2D numpy配列に変換され、残りとともに返されます。
def read_file(f):
srchp = re.compile(r'^\d{4,}\s') # beg. of line, digit min 4, white space
f = open(f)
rest = []
z = [x.strip() for x in f.readlines()] # read file, strip whitespace at beg./end of line,
#store in z as list of strings. each line is at its own offset
for i in range(len(z)-1,-1,-1):
if not srchp.search(z[i]): #if regex does not match
rest.append(z.pop(i)) #append to list rest
else:
z[i] = map(float,z[i].split())
f.close()
return numpy.array(z),rest
C ++のコンテナー(ベクトルのベクトル?配列?)にはどのデータ型を使用する必要がありますか?一日の終わりに、配列を使用して統計分析を行いたいと思います。このコードをC++に変換する際に助けていただければ幸いです。
以下は、読み取る必要のあるファイルからの抜粋です。
TEMP_INF 700.000000 SCALAR
NAME VALUE TYPE DIMENSIONS
TEMP_REF 25.0000000 SCALAR
***** POST1 ELEMENT TABLE LISTING *****
STAT MIXED MIXED MIXED MIXED
ELEM X Y Z TEMP
23261 0.56292E-03 -0.96401E-02 0.24093 755.91
23262 -0.16635E-03 -0.97998E-02 0.24080 756.25
23263 -0.17039E-03 -0.10374E-01 0.24025 757.65
23264 0.12895E-02 -0.74483E-02 0.24242 751.64
23265 0.67515E-03 -0.80538E-02 0.24209 752.62
23266 0.10350E-02 -0.86614E-02 0.24164 753.92
23267 0.56032E-03 -0.88420E-02 0.24105 756.49
23268 0.13782E-02 -0.10792E-01 0.23978 758.74