C++中vector数组中的数据存入磁盘文件的问题

#include"iostream"
#include<vector>
#include"fstream"
#include"ostream"
using namespace std;
class person
{
public:person(char *,char*);
friend ostream & operator<<(person &one, ostream &os);
private: char ID[11];
char NAME[11];
};
ostream & operator<<(person &one, ostream &os)
{
os << one.ID << one.NAME;
return os;
}
inline person::person(char *name, char *id)
{
strcpy_s(ID, sizeof(ID), id);
strcpy_s(NAME, sizeof(NAME), name);
}
int main()
{
fstream fp;
person *temp;
fp.open("数据.txt",ios_base::out);
vector<person>stu;
for (int i = 0; i < 3; i++)
{
char name[11], id[11];
cin >> name >> id;
temp = new person(name, id);
stu.push_back(*temp);
}
for (int i = 0; i <stu.size(); i++)
{

fp << stu[i];!!!!!!(在这里显示没有相匹配的操作符。。。我重载了 啊 。。求大师指导。我的目的是要把vector数组中的数据写入到文件中)
}
fp.close();
system("pause");
return 0;
}C++中vector数组中的数据存入磁盘文件的问题

你这是vs2013编译器吗?

我在vs2010 调通

#include"iostream"
#include<vector>
#include"fstream"
#include"ostream"
using namespace std;
class person
{
public:
    person(char *,char*);
    friend ostream & operator<<(ostream &os,person &one)
    {
        os << one.ID << one.NAME;
       return os;
    }
private: 
   char ID[11];
   char NAME[11];
};
inline person::person(char *name, char *id)
{
 strcpy(ID, id);
 strcpy(NAME, name);
}
int main()
{
 fstream fp;
 person *temp;
 int i;
 fp.open("数据.txt",ios_base::out);
 vector<person>stu;
 for (i = 0; i < 3; i++)
 {
  char  name[11], id[11];
  cin >> name >> id;
  temp = new person(name, id);
  stu.push_back(*temp);
 }
 for (i = 0; i <stu.size(); i++)
 {
 
  fp << stu[i];
 }
 fp.close();
 system("pause");
 return 0;
}

温馨提示:内容为网友见解,仅供参考
第1个回答  2014-05-31
#include"iostream"
#include <vector>
#include"fstream"
#include"ostream"  // 这些 为什么是 "" 不是 <>? 有什么具体原因吗?
using namespace std;
class person
{
public:
    person(char *,char*);
    friend ostream & operator<<(person &one, ostream &os);
private: 
    char ID[11];
   char NAME[11];
};
ostream & operator<<(person &one, ostream &os)   // 重载 << >> 时, 第一个参数 一定是 ostream & os.  或者 istream & i, 而不能把它们当当作第二个参数.
{


只看到这, 你先改了 看行不行吧, 没有仔细看你的代码.

追问

额 写过好多次重载了都没注意这个问题 。。。呵呵 谢谢你啊 嘻嘻 下次哪里调试不过了还得问你。。

追答

呵呵, 我的荣幸. 入门级C++各种问题. 都可以叫上我一起研究, 虽然我也不太会, :)

追问

额额 太谦虚 了 我下次怎么联系你

追答

我的Q: 2D4749EF (16进制)

C++怎么把vector<bool>类的数据写到文件中?
vector<bool> vec;for_each(vec.begin(), vec.end(),Write(file));

c++如何把一个vector容器内容追加到;另一个容器后面
dest.insert(dest.end(), src.begin(), src.end());

c++如何把一个vector容器内容追加到另一个容器后面?
c++中的容器主要使用如vector,list(顺序容器)这些都是已经封装好了的,包含头文件"vector","list",通过迭代器iterator访问容器中的数据,map,set(关联容器),关联容器map键值对形式出现key-value,key唯一,mutimap多映射可以不唯一;set是一个单一值的集合,如1,2,3,4。和其他变量定义一样,定义vecto...

c++ vector数据保存到文本中
一个元素一个元素的处理,按照一个格式用fwrite写入文件,读出来的时候按照那个格式fread进来,就可以了。定义save和load函数实现。

【C++编程语言】之 C++的vector容器 基本概念 构造函数 赋值 容量判断...
创建vector容器 Vector赋值操作 功能描述:给vector容器赋值 vector容量判断和大小改变 功能描述:对 vector容器的容量和大小操作 vector插入和删除 功能描述:对 vector容器进行插入,删除操作 vector数据存取 功能描述:对vector中的数据的存取操作 vector互换容器 功能描述:实现两个容器元素进行互换 vector预留...

c++ vector的插入问题
就是说,vector中添加元素的时候,是将元素值复制到容器里。就是说容器中存放的是原始元素的副本。被复制的原始值与新容器中的元素各不相关,此后,容器内元素值发生变化时,被复制的原值不会受到影响,反之亦然。你自己可以写个程序验证下。例如;vector<string> vs;string s="nihao";vs.push_back(...

从文件中读取存入vector的问题
在C++中没有非常方便的序列化方式,一般都需要你自己手工来控制对象的存储或构建过程。像你这个问题,你只能自己在这个类中写存储过程代码了,比如使用文本文件,第一行写入vector的大小,后面每行写入一个string。然后反序列化的时候先读取第一个数字,然后读取后面这么多个string,最后再构建vector,最终...

C++类内包含vector成员变量,vector中的元素存储在堆区还是栈区?_百度...
new T就是在堆区创建一个类T的对象,因为v是类T的数据成员,v自然是存放在堆区。delete p时v会自动释放。

C++中vector使用不当出现的错误
vector内部有一个指向分配了的内存的指针 你copy过去造成多个vector指向堆上同一块内存 这样在析构的时候就会对同一块内存释放两次 出错是在所难免的 STL容器的使用原则之一就是:不要使用CopyMemory,memcpy之类的函数来作无差别拷贝,毕竟容器不是单纯的C结构体 ...

C++中 vector中存储结构体(输出vector时遇问题)
test是像容器一样的, 里面的元素是temp,你如果要输出,应该是cout<<test[0].s 这里的test[0]就是 test.push_back(temp) 里的temp啦

相似回答