gpt4 book ai didi

c++ - 在 C++ 中将某种结构化的文本文件读入数组

转载 作者:太空宇宙 更新时间:2023-11-04 12:07:44 26 4
gpt4 key购买 nike

我想用 C++ 重现以下 python 代码,但遇到了一些麻烦。函数 read_file 读取一个文本文件,测试每行中的第一个单词,看它是否是一个整数。如果第一个单词是整数(4 位或更多数字),则该行上的所有单词都作为 float 添加到列表 z 中。在另一种情况下,该行只是作为字符串添加到列表中。列表的列表 (z) 被转换为 2D numpy 数组并与 rest 一起返回。

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++ 中的容器使用什么数据类型( vector 的 vector ?数组?)?归根结底,我想用数组做一些统计分析。如果能帮助我将此代码转换为 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

最佳答案

因为每一行看起来都包含一个整数和一个 float ,所以声明一个 struct 是个不错的主意有了这些信息。

struct row {
int elem;
float x, y, z, temp;
};

现在您可以创建 vector<row>保存您的信息。

 vector<row> rows;

对于每一行,您可以像这样插入元素:

row r;
cin >> r.elem >> r.x >> r.y >> r.z >> r.temp;
rows.push_back(r);

关于c++ - 在 C++ 中将某种结构化的文本文件读入数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11302453/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com