【发布时间】:2014-03-04 00:42:57
【问题描述】:
我正在尝试从文件中读取单词和数字并将它们插入到 Node 结构中。 有一个包含 StudentNames 和 StudentNumbers 的文件。 我创建了一个类似的结构:
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;
}
我的逻辑是它将单词读入名称,因为它们是字符串,并且它将数字部分读入 nos 因为 nos 是 int 它不会只接受字符串整数。但它不会将名称和编号保留为 "" idk how。
这基本上就是我想要做的。我需要使用包含名称和数字的这些节点创建一个链接列表。
另一个问题是我不明白 *next 是如何指向下一个节点的。
对不起,如果它令人困惑,但我也很困惑 :))
输入文件示例
L0RDQB 12345
LordQb 23456
...
【问题讨论】:
-
你忘了用
line初始化word。 -
您的结构结合了两个独立的概念:1) 包含名称和编号的节点和 2) 链表。更好的做法是为一个目的创建两个单独的数据结构。此外,如果您要将文件中的数据读取到类(或结构)中,通常可以方便地为此目的定义一个 iostream 提取器。