目前我想在字符讀入一類,看起來像這樣存儲文本文件轉換成一個類
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是一個包含需要添加到對象中的元素的向量,但我無法找到一種不斷循環遍歷向量並將元素放到正確位置的好方法。
我製作的算法有一個計數器和一個佔位符,計數器將循環遍歷矢量點,佔位符將保留第一個對象的數據成員的位置,在這種情況下爲段。在算法結束時,位置應該等於temp_data的大小並離開循環。但編譯和運行時遇到問題,它似乎將錯誤的元素放入錯誤的對象成員中。
任何想法?