我目前正在尝试将字符读入一个看起来像这样的类
struct data {
string segment; string name;
double length; double radius; double wall_thickness;
double young_modulus; double compliance;
};
我还有一个包含以下元素的向量:
2A
Aorta_Ascendens
2
1.47
.164
4
53.4
2B
Aorta_Ascendens
2
1.44
.161
4
51.0
3A
我想将文本文件读入每个部分,目前这是我连续读取文本文件并分别添加每个部分的算法。
int place = 0;
while (place != temp_data.size()){
int counter = 0;
for (counter; counter <= 7; ++counter){
istringstream is(temp_data[place + counter]);
if (counter == 0){ is >> a.segment; }
if (counter == 1){ is >> a.name; }
if (counter == 2){ is >> a.length; }
if (counter == 3){ is >> a.radius; }
if (counter == 4){ is >> a.wall_thickness; }
if (counter == 5){ is >> a.young_modulus; }
if (counter == 6){ is >> a.compliance; }
}
counter = counter - 1; //since the next segment is at temp_data[7], must subtract one to have place = 7.
place = counter + place;
v.push_back(a);
}
我遇到的问题是试图找到一种方法来确保文本的正确部分进入对象的正确部分。对于前七行文本,对象应该是这样的:
segment: 2A
name: Aorta_Ascendens
length: 2
radius: 1.47
wall_thickness: .164
young modulus: 4
compliance: 53.4
这应该对整个文本文件重复相同的方式。temp_data 是一个向量,其中包含需要添加到对象中的元素,但是我找不到一个好的方法来不断循环遍历向量并将元素放入正确的位置。
我制作的算法有一个计数器和一个占位符,计数器将在向量点之间循环,占位符将保存第一个对象的数据成员的位置,在这种情况下为段。在算法结束时,place 应该等于 temp_data 的大小并退出循环。但是我在编译和运行时遇到了问题,它似乎将错误的元素放入了错误的对象成员中。
有任何想法吗?