C++中类的对象在文件中的存取问题

#include<iostream>#include<fstream>#include<string>usingnamespacestd;classKey{private... #include<iostream>
#include<fstream>
#include<string>
using namespace std;
class Key
{
private:
string keyword;
public:
Key();
string getkey();
void setkey(string NewKey);

};
string Key::getkey()
{
return keyword;
}
Key::Key(){}
void Key::setkey(string NewKey)
{
keyword = NewKey;
}
class KeyManager
{
private:
Key Karray[100];
int top;
public:
KeyManager();
~KeyManager();
void AddKey();
};
KeyManager::KeyManager()
{
Key k;
top = -1;
fstream file("keyword.txt", ios::in);
while (1)
{
file.read((char*)&k, sizeof(k));
if (!file)break;
top++;
Karray[top] = k;
}
file.close();
}
KeyManager::~KeyManager()
{
fstream file("keyword.txt", ios::out);
for (int i = 0; i <= top; i++)
{
file.write((char*)&Karray[i], sizeof(Karray[i]));
}
file.close();
}
void KeyManager::AddKey()
{
Key KW;
string keyword;
string question;
string answer;
cout << "请输入关键字:";
getline(cin, keyword);
KW.setkey(keyword);
top++;
Karray[top] = KW;
}
int main()
{
KeyManager kw;
kw.AddKey();
return 0;
}

编译没有问题,就是我一旦运行完成,存了东西在文件里,就没办法再次运行,求高手看看我这个问题出在哪里?
展开
 我来答
风若远去何人留
推荐于2016-02-01 · 知道合伙人互联网行家
风若远去何人留
知道合伙人互联网行家
采纳数:20412 获赞数:450134
专业C/C++软件开发

向TA提问 私信TA
展开全部

key中的keyword是string的 不能用read/write

要么改成字符数组 要么改用<< 和>>

后一种改法大致如下

#include<iostream>
#include<fstream>
#include<string>
using namespace std;
class Key
{
private:
string keyword;
public:
Key();
string getkey();
void setkey(string NewKey);

};
string Key::getkey()
{
return keyword;
}
Key::Key(){}
void Key::setkey(string NewKey)
{
keyword = NewKey;
}
class KeyManager
{
private:
Key Karray[100];
int top;
public:
KeyManager();
~KeyManager();
void AddKey();
};
KeyManager::KeyManager()
{
Key k;
top = -1;
fstream file("keyword.txt", ios::in);
while (1)
{
//file.read((char*)&k, sizeof(k));
string t;
file >> t;
k.setkey(t);
if (!file)break;
top++;
Karray[top] = k;
}
file.close();
}
KeyManager::~KeyManager()        
{
fstream file("keyword.txt", ios::out);
for (int i = 0; i <= top; i++)
{
//file.write((char*)&Karray[i], sizeof(Karray[i]));
file << Karray[i].getkey();
}
file.close();
}
void KeyManager::AddKey()
{
Key KW;
string keyword;
string question;
string answer;
cout << "请输入关键字:";
getline(cin, keyword);
KW.setkey(keyword);
top++;
Karray[top] = KW;
}
int main()
{
KeyManager kw;
kw.AddKey();
return 0;
}
whj_njit
2015-04-22 · TA获得超过230个赞
知道小有建树答主
回答量:387
采纳率:0%
帮助的人:256万
展开全部
是不能这样直接将内种的信息存到文件中的,类中的虚函数指针是一个地址,每次运行的地址肯定是不通的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式