
程序代码:
#include <vector>
#include <fstream>
#include <iostream>
#include <algorithm>
#include <iterator>
struct foo
{
int v1, v2, v3, v4;
};
std::istream& operator>>( std::istream& is, foo& f )
{
return is >> f.v1 >> f.v2 >> f.v3 >> f.v4;
}
std::ostream& operator<<( std::ostream& os, const foo& f )
{
return os << f.v1 << '\t' << f.v2 << '\t' << f.v3 << '\t' << f.v4;
}
int main()
{
std::vector<foo> vs;
// 从文件中输入
std::copy( std::istream_iterator<foo>(std::ifstream("a")), std::istream_iterator<foo>(), std::back_inserter(vs) );
// 向屏幕输出
std::copy( vs.begin(), vs.end(), std::ostream_iterator<foo>(std::cout,"\n") );
return 0;
}
如果看不懂,可以这样:

程序代码:
#include <vector>
#include <fstream>
#include <iostream>
struct foo
{
int v1, v2, v3, v4;
};
int main()
{
std::vector<foo> vs;
// 从文件中输入
{
std::ifstream infile("a");
if( infile )
{
for( foo f; infile>>f.v1>>f.v2>>f.v3>>f.v4; )
vs.push_back( f );
}
}
// 向屏幕输出
{
for( std::vector<foo>::const_iterator itor=vs.begin(); itor!=vs.end(); ++itor )
{
const foo& f = *itor;
std::cout << f.v1 << '\t' << f.v2 << '\t' << f.v3 << '\t' << f.v4 << '\n';
}
std::cout << std::flush;
}
return 0;
}