如何获取文件中的数据
程序代码:
#include <fstream> using namespace std; int main() { std::ifstream infile; infile.open("a"); return 0; }
打开了a文件后,如何将a文件的每类数据(每一纵行数据类型相同)存入vector或其他容器内
新手分不多球包涵,求实例代码
[ 本帖最后由 yqjohn 于 2012-11-3 12:03 编辑 ]
#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; }
{ std::ifstream infile("a"); if( infile ) { for( foo f; infile>>f.v1>>f.v2>>f.v3>>f.v4; ) vs.push_back( f ); } }这里的for执行完后vs.pushback后再用for