2014-03-04 97 views
1

我試圖從文件中讀取單詞和數字並將它們插入到節點結構中。 有一個包含StudentNames和StudentNumbers的文件。 我創建像一個結構:從文件讀取到C++節點

struct Node 
{ 
    string Name; 
    int Number; 
    Node *next; 

    Node::Node(){} 

    Node::Node(string ID, int No):Name(ID), Number(No){} 
}; 

我試圖把名稱與數字直接到節點在創建節點。

string filename, line,names; 
int nos; 
cout<<"Enter Filename: "; 
cin >> filename; 
ifstream input(filename); 

if(input.fail()) 
{ 
    cout<<"\n FAILED TO OPEN FILE"; 
} 

else 
{ 
    getline(input, line); 
    stringstream word; 
    word>>names 
    word>>nos 


    Node *p; 
    p=new Node(names,nos); 
    cout<<p->Name<<p->Number; 
} 

我的邏輯是,它讀取的話到的名字,因爲他們是字符串,它讀取數字化零爲號,因爲號爲int它不會接受字符串的整數。但它不會名稱,並且nos保持爲「」idk如何。

這基本上是我想要做的。我需要用包含名稱和數字的節點創建一個鏈表。

而另一個問題是我不明白* next是如何指向下一個節點的。

很抱歉,如果它的混亂,但我很困惑太:))

輸入文件示例

L0RDQB 12345 
LordQb 23456 
... 
+2

你忘了用'line'初始化'word'。 –

+0

您的結構結合了兩個單獨的概念:1)包含名稱和編號的節點以及2)鏈接列表。更好的做法是創建兩個獨立的數據結構,每個用於一個目的。另外,如果您正在將文件中的數據讀入類(或結構體),爲此目的定義一個iostream提取器通常很方便。 – Edward

回答

0

Node創建第二個構造函數接受一個istream

Node::Node(istream &is) { is >> Name >> Number; } 

我將把讀者的檢測作爲練習。

+0

如果一個輸入文件只包含一個名稱但不包含數字,那麼應該怎麼辦呢? – Edward