
程序代码:
#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;
}