对STL有兴趣的朋友来看看??(由于刚注册,只能给20分)

19781227 2001-07-28 06:18:47
....
ofstream myfile("test.txt",ios::in|ios::trunc);
list<int>li(intarr,intarr+10);
copy(li.begin(),li.end(),ostream_iterator<int>(myfile,"\n"));
....
这样做我可在myfile中存储intarr数组..


....
list<pair<string,int>* >li;
...
假设此时li以含有5个单元.

我也向将li中的pair内容到入到myfile.
就像MFC重载CArchive 的<<,>>一样将string,int对,存入myfile,
不知那位高手能给出解答,怎样做就行了????
...全文
69 点赞 收藏 4
写回复
4 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
_STLer 2001-07-28
我也编译了一遍,不对!!!
不过考虑到你的需求,将代码改为如下!
代码能够工作!不过很没有效率,原因是没遍历一个元素都要打开一次文件!
我试过在函数对象的构造中开文件,虽然执行结果是正确的,不过会导致错误!不明白原因:
下面是代码?有什么问题可以再讨论:

#pragma warning( disable : 4786 )
#include <utility>
#include <list>
#include <iostream>
#include <fstream>
#include <algorithm>

using namespace std;

class CF
{
string filename;
public:
CF(string str):filename(str) {}
~CF() {}
bool operator() ( pair<string,int>*& p)
{
ofstream of;
of.open (filename.c_str(),ios::app );
for(int i=0;i<p-> first .length ();i++)
of.put((char)p->first [i]);
of.put('\t');
of.put((char)(p->second+'0'));
of.put('\n');
of.close ();
return 0;
}
};
void main()
{
pair<string, int> p[2];
p[0].first ="i love you!";
p[0].second =0;
p[1].first ="no!";
p[1].second =1;
list<pair<string,int>* > li;
for(int i=0;i<2;i++)
li.push_back (&p[i]);
for_each(li.begin (),li.end (),CF("c:\\test.txt"));
}
我的email:crazy_ax@sina.com
回复
19781227 2001-07-28
能通过变异,但结果不对,pair<string,int>*,结果显示时,成为了16进制数,而并非相要的
string,我还在研究,大哥要是有空再帮帮忙
回复
gboy 2001-07-28
gz
回复
_STLer 2001-07-28
试试:

#pragma warning( disable : 4786 )
#include <utility>
#include <list>
#include <fstream>

using namespace std;

void main()
{
ofstream myfile("c:\\test.txt",ios::in|ios::trunc);
pair<string, int> p[2];
p[0].first ="0";
p[0].second =0;
p[1].first ="1";
p[1].second =1;
list<pair<string,int>*> li;
for(int i=0;i<2;i++)
li.push_back (&p[i]);
copy(li.begin (),li.end (),ostream_iterator<pair<string,int>*>(myfile,"\n"));
}


把编译的结果告诉我,不知道对不对!
回复
相关推荐
发帖
VC/MFC
创建于2007-09-28

1.5w+

社区成员

VC/MFC相关问题讨论
申请成为版主
帖子事件
创建了帖子
2001-07-28 06:18
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……