2016-02-11 106 views
-2

我已經制作了一個程序,它從文本文件中讀取數據,向結構中添加組件並將每個結構元素添加到矢量中。問題是,由於某種原因,閱讀功能似乎根本不起作用。正確提取到矢量

下面是代碼:

struct address 
{ 
    string street; 
    int zip; 
    string city; 
}; 

struct person 
{ 
    string name; 
    string id; 
    address location; 
}; 

istream & operator >>(istream & in, person & p) 
{ 
    getline(in, p.name); 
    getline(in, p.id); 
    getline(in, p.location.street); 

    return in; 
} 

void read_file(string filename) 
{ 
    vector<person> persons; 
    ifstream input; 
    input.open(filename); 

    if (!input.is_open()) 
    { 
     cout << "File Not Found" << endl; 
    } 

    person temp; 
    input >> temp; 
    persons.push_back(temp); 
    input.close(); 

    if (persons.size() == 0) 
    { 
     cout << "The are no contacts" << endl; 
    } 
    else cout << "There are" << " " << persons.size() << " " << "contacts in the file" << endl; 
} 

在文本文件看起來像這樣的臺詞:

Test Name Surname 
Id 1234567890 
Adress, postcode, city 

當我說這是行不通的我指的是讀取功能不顯示,如果有是向量中的元素。

這裏是文本文件:names.txt

主要代碼:

int _tmain(int argc, _TCHAR* argv[]) 
{ 

const string filename = "C://Users/TEMP/Desktop/lab1/names.txt"; 
int userinput = 0; 


while (true) 
{ 


    cout << "Menu: \n1) Sök del av personnamn\n2) Sök stader\n3) Exit" << endl; 

    cin >> userinput; 
    cout << endl; 

    if (userinput == 1) 
    { 
     namnsok; 
    } 
     else if (userinput == 2) 
     { 
      stadsok; 
     } 
      else if (userinput == 3) 
      { 
       break; 
      } 
} 


return 0; 
} 
+0

請提供幾行輸入文件和比「不工作」更精確的問題 – UmNyobe

+0

似乎在我的機器上運行良好。請提供輸入文件。 –

+0

@AdiLevin我沒有收到任何編譯錯誤,但它不顯示是否有元素。 –

回答

-1

我不得不行 input.open(filename); 改變input.open(filename.c_str(),ifstream::in);得到它爲我工作。您只會從輸入中讀取第一個人。

+0

'ConsoleApplication1.exe'(Win32):Loaded'C:\ Windows \ SysWOW64 \ ntdll.dll'。找不到或打開PDB文件。 'ConsoleApplication1.exe'(Win32):加載'C:\ Windows \ SysWOW64 \ kernel32.dll'。找不到或打開PDB文件。這就是我所得到的! –