C++文件输出时遇到小麻烦,该怎么解决

C++文件输出时遇到小麻烦想请教各位高手一个小问题:以下是一个输出vector元素的函数模板template classT

C++文件输出时遇到小麻烦
想请教各位高手一个小问题:
以下是一个输出vector元素的函数模板
template <class   T>   void   printVector(vector <T> &   vect,FILE*   pFile){
for(int   i=   0;   i <vect.size();i++){
cout < <i < < "   " < <vect.at(i) < <endl < < "   " < <endl;// " < < "已重载
fprintf(pFile, "%d\n   ", "%s ",i,(vect.at(i)));//???
                                  }
}
想把结果同时输出到文件,上面问号的语句是不对的,这里不能用格式化输出,因为vect.at(i)所取得的值是不一定的,可能是int型,也可能是cha型等。一直没想到什么好的解决方法,使其能够方便地输出到文件。还请各位帮帮忙。

[解决办法]
不要用fprintf了,直接重载 < <操作符输出到文件流就好了,基本类型都可以用
[解决办法]
使用 串行化
[解决办法]
Visual C++串行化编程:

MFC提供了类CArchive,实现了运算符 < <和> > 的重载,希望按照前面cin和cout 的方式进行文件I/O。通过和CFile类的配合,不仅仅实现了对简单类型如int/float等的文件读写,而且实现了对可序列化对象(Serializable Objects,这个概念后面描述)的文件读写。
一般情况下,使用CArchive对对象进行读操作的过程如下:

//示例代码2
//定义文件对象和文件异常对象
CFile file;
CFileException fe;
//以读方式打开文件
if(!file.Open(filename,CFile::modeRead,&fe))
{
fe.ReportError();
return;
}

//构建CArchive 对象
CArchive ar(&file,CArchive::load);
ar > > obj1> > obj2> > obj3...> > objn;
ar.Flush();
//读完毕,关闭文件流
ar.Close();
file.Close();

  使用CArchive对对象进行写操作的过程如下:

//示例代码3
//定义文件对象和文件异常对象
CFile file;
CFileException fe;
//以读方式打开文件
if(!file.Open(filename,CFile::modeWrite|CFile::modeCreate,&fe))
{
fe.ReportError();
return;
}

//构建CArchive 对象
CArchive ar(&file,CArchive::load);
ar < < obj1 < <obj2 < <obj3... < <objn;
ar.Flush();
//写完毕,关闭文件流
ar.Close();
file.Close();

更多内容见:http://www.yesky.com/85/1742585.shtml
或者查询: Visual C++串行化
[解决办法]
don 't use c lib,use operator < <
[解决办法]
序列化,动态创建
boost里面有个这样的库