2013-10-31 54 views
0

我想在對每行一個名字和年齡,如該發送一個String和Int通過文本文件中的函數

Tom 
55 
Bob 
12 
Tim 
66 

一個文本文件中讀取然後我需要將它傳遞給函數這需要一個字符串和一個整數,例如:

sortDLL.Insert(name, age); 

但是,我不確定如何做到這一點。我用下面的測試了它和它的作品(繞過文本文件):

string tom = "tom"; 
string bob = "bob"; 
string tim = "tim"; 
int a = 55; 
int b = 12; 
int c = 66; 

    sortDLL.Insert(tom, a); 
    sortDLL.Insert(bob, b); 
    sortDLL.Insert(tim, c); 

但是當我嘗試在文本文件閱讀和發送,程序運行不正常。這是我目前正在和我有一些其他的東西好惹的,但有沒有運氣:

ifstream infile ("names.txt"); 


while(getline(infile, line)); 
{ 
    istringstream ss(line); 
    if (ss >> name) 
     cin >> name; 
    else if (ss >> wt) 
     cin >> wt; 

    sortDLL.Insert(name, wt); 


} 
infile.close(); 

像往常一樣,任何幫助來得到這個工作將不勝感激,謝謝!

+0

你不應該有; (分號)在while語句結尾'while(getline(infile,line));' – wrongite

+0

啊,謝謝你指出,不知道這是怎麼回事。不幸的是,那不是問題。 – Tyler

回答

1

我認爲正確的代碼應該是這樣的。請記住,您必須閱讀每1插頁2行。

while(getline(infile, line)) 
{ 
    stringstream ss(line); 

    ss >> wt; 
    if(ss.fail()) { 
     name = line; 
     continue; 
    } 
    else { 
     // cout << name << ":" << wt << endl; 
     sortDLL.Insert(name, wt); 
    } 
} 
+0

cout正確地打印到屏幕上,包括名稱和年齡,但在將其傳遞給函數時(控制檯只保留爲空),它仍然沒有做任何事情。任何想法,爲什麼這可能會發生? – Tyler

+0

Ahhhhh ......對我自己很不滿,哈哈。完美的工作,我不小心評論了我的打印聲明,而我正在評論我的主要其他代碼。非常感謝你的幫助! – Tyler