2012-11-16 81 views
0

商店輸入文件我有以下數據的txt文件:C++與多個分隔符

Point2D, [3, 2] 
Line3D, [7, 12, 3], [-9, 13, 68] 
Point3D, [1, 3, 8] 
Line2D, [5, 7], [3, 8] 

實際上,我怎麼去通過去除多個分隔符,所以我可以提取出來的數據存儲它們?

我想要讀入第一行並忽略「,」「[」和「]」,所以我可以單獨存儲Point2D,3和2。然後,我繼續進行第二行,等等。

另外,是有可能做到這一點,讓說,例如:

第一行 「的Point2D,[3,2]」,被檢測時的Point2D時,它將3和2存入的Point2D。 x和point2d.y。

對於第二行「Line3D,[7,12,3],[-9,13,68]」,它會將值存儲到line3d.x,line3d.y,line3d.z等等中因此。

現在,我只能得到它忽略「」。這是我到目前爲止已經完成:

void readData() 
{ 
    string fileName; 
    int i=0; 
    cout << "Enter file name: "; 
    cin >> fileName; 
    fstream infile; 

    infile.open(fileName.data()); 
    // This will count the number of lines in the textfile. 
    if (! infile.is_open()) 
    { 
     cerr<<"Error : " << fileName.data() <<" is not found"<<endl; 
    } 

    string line;  
    stringstream field; 
    while (getline(infile,line)) 
    { 
     string f; 
     field<<line; 
     while (getline(field,f,',')) 
     { 
      recordA.push_back(f);    
     } 
     field.clear(); 
    } 
    cout << recordA.size() << " records read in successfully!"; 
    infile.close(); 

}

+0

對不起,不是一個差異的人 – user1793001

+0

我在前段時間發佈了一個[答案](http://stackoverflow.com/a/2909187/179910)到一個類似的問題。看起來這個基本想法在這裏起作用。如果你真的不想明確地讀取逗號和括號,你可以創建一個將它們視爲空白的語言環境。 [一個例子](http://stackoverflow.com/a/10060244/179910),用斜槓和破折號做。 –

+0

你以前在這裏,剛剛創建了一個新賬戶?這個問題看起來很* *類似於[問題串(http://stackoverflow.com/users/1578897/user1578897?tab=questions),其被要求不久前... –

回答

0

複雜化你的生活,我建議如下:

  1. 做一個工廠對象讀取文本和創建對象 基於文本。例如,當「的Point2D」讀它會創建一個 Point2D實例。
  2. 創建每個類的方法來讀取自己的數據。例如, Point2D將具有解析「[3,2]」的方法,並將第一縱座標分配爲3,第二縱座標分配2。
  3. 在工廠中,讓對象讀取該行的其餘部分,並從文本行中指定 其成員。
  4. 如果您使用「從文件加載 」方法制作共同父對象的所有對象,則可以讓工廠使用指向父級的「通用」指針調用方法 。

簡單。讓對象讀取他們自己的數據。