我在txt文件中读取了一个程序,并打印出文件中的所有行。 我使用链接结构来做到这一点。 代码:
#include <string>
struct ListNode{
std::string item;
int count;
ListNode* link;
};
#include <iostream>
#include <fstream>
int main(){
char filename[] = "src/inputdata";
std::cout << " Reading from file: " << filename << " . . . ";
std::ifstream in( filename );
if (in.fail()){
std::cout << " ... not able to read it! Exiting." << std::endl;
return -1;
}
std::cout << " ... OK, file opened." << std::endl << std::endl;
ListNode* first = new ListNode();
ListNode* p = first;
int count = 1;
while (!in.eof()){
getline( in, p->item );
p->count = count++;
p->link = new ListNode();
p = p->link;
}
count = 1;
p = first;
while (count <= p->count)
{
p->count = count++;
std::cout << p->count << ": " << p->item << std::endl;
p = p->link;
}
}
要求是将此程序转换为3个文件,驱动程序,主cpp文件和头文件。我对c ++很新。我已经按如下方式设置了头文件,但我想我错过了一些内容,可能是getter和setter ......
标题文件:
//ListNode.h
#ifndef LISTNODE_H_
#define LISTNODE_H_
using namespace std;
#include <iostream>
class ListNode{
public:
ListNode();
virtual ~MyData();
private:
string item;
int count;
ListNode* link;
};
#endif /* LISTNODE_H_ */
我应该怎么处理其他两个文件? 感谢您的回答。谢谢
答案 0 :(得分:0)
现在你正在使用课程..
在Class
中创建一个方法class ListNode
{
....
ListNode* CreateList();
....
};
执行读取文件和创建列表的操作;与您在main()
在ListNode.h
中添加ListNode.cpp
文件,并为您在ListNode
类
Cpp文件
#include "ListNode.h"
.... //remaining code
最后在第三个文件main.cpp
中。包括“ListNode.h”
#include"ListNode.h"
...//code..
在main方法中创建ListNode
类的对象并执行您想要执行的操作
答案 1 :(得分:0)
头文件(.h):
//ListNode.h
#ifndef LISTNODE_H_
#define LISTNODE_H_
#include <string>
using namespace std;
class ListNode {
public:
ListNode();
~ListNode();
// Accessor functions.
string const& getItem() const;
int getCount() const;
ListNode* getLink() const;
// Modifier functions.
void setItem(string const& i);
void setCount(int c);
void setLink(ListNode* l);
private:
string item;
int count;
ListNode* link;
};
#endif /* LISTNODE_H_ */
实施文件(.cc):
// ListNode.cc
#include "ListNode.h"
ListNode::ListNode() : count(0), link(NULL) {}
ListNode::~ListNode() {}
string const& ListNode::getItem() const
{
return item;
}
int ListNode::getCount() const
{
return count;
}
ListNode* ListNode::getLink() const
{
return link;
}
void ListNode::setItem(string const& i)
{
item = i;
}
void ListNode::setCount(int c)
{
count = c;
}
void ListNode::setLink(ListNode* l)
{
link = l;
}
main.cc:
// main.cc
#include <iostream>
#include <fstream>
#include "ListNode.h"
int main()
{
char filename[] = "src/inputdata";
std::cout << " Reading from file: " << filename << " . . . ";
std::ifstream in( filename );
if (in.fail()){
std::cout << " ... not able to read it! Exiting." << std::endl;
return -1;
}
std::cout << " ... OK, file opened." << std::endl << std::endl;
ListNode* first = new ListNode();
ListNode* p = first;
int count = 1;
while (!in.eof()){
string item;
getline( in, item );
p->setItem(item);
p->setCount(count++);
p->setLink(new ListNode());
p = p->getLink();
}
count = 1;
p = first;
while (count <= p->getCount())
{
p->setCount(count++);
std::cout << p->getCount() << ": " << p->getItem() << std::endl;
p = p->getLink();
}
}