2014-03-13 48 views
0

我在處理類和對象時如何正確使用getline()有問題。我需要讀取string類型的行,然後使用push_back將它們添加到myVec向量中。以下是我目前所面對的:使用getline()從文本文件中讀入行並將push_back讀入對象的向量中

vector<myClass> read_file(string filename) 
{ 
    vector<myClass> myVec; 
    myClass line; 
    ifstream inputFile(filename); 
    if (inputFile.is_open()) 
    { 
     while (inputFile.getline(inputFile, line)) // Issue it here. 
     { 
      myVec.push_back(line); 
     } 
     inputFile.close(); 
    } 
    else 
     throw runtime_error("File Not Found!"); 

    return myVec; 
} 

假設類myClass已經實現。

感謝您的幫助。

回答

1

假設類myClass已經實現。

這沒有幫助,我們不能僅僅假設它已經實現並知道它的接口是什麼或者如何使用它,所以我們不能回答你的問題。

爲什麼你期望std::ifstream知道如何使用myClass?爲什麼您將inputFile作爲參數傳遞給inputFile的成員函數?你有沒有看過任何文檔或示例顯示如何使用getline

假設你可以從std::string構建一個myClass這將工作(注意它讀成string並注意您無需手動關閉文件):

vector<myClass> read_file(string filename) 
{ 
    ifstream inputFile(filename); 
    if (!inputFile.is_open()) 
     throw runtime_error("File Not Found!"); 

    vector<myClass> myVec; 
    string line; 
    while (getline(inputFile, line)) 
    { 
     myClass m(line); 
     myVec.push_back(m); 
    } 

    return myVec; 
} 
+0

謝謝,我意識到自己的錯誤,不久張貼後。什麼是myClass m(行)for/doing? – Gundown64

2

您對getline的使用與簽名不符 - 您有錯誤類型的參數。

istream& getline (char* s, streamsize n); 
istream& getline (char* s, streamsize n, char delim); 

如果你想一個myClass元素添加到根據你讀的字符串向量,你必須首先構建它,然後將其推回。