试试:#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"));
}
把编译的结果告诉我,不知道对不对!

解决方案 »

  1.   

    能通过变异,但结果不对,pair<string,int>*,结果显示时,成为了16进制数,而并非相要的
    string,我还在研究,大哥要是有空再帮帮忙
      

  2.   

    我也编译了一遍,不对!!!
    不过考虑到你的需求,将代码改为如下!
    代码能够工作!不过很没有效率,原因是没遍历一个元素都要打开一次文件!
    我试过在函数对象的构造中开文件,虽然执行结果是正确的,不过会导致错误!不明白原因:
    下面是代码?有什么问题可以再讨论:#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:[email protected]