读取文件内容 istream_iterator 和 istreambuf_iterator 的不同。

4 views
Skip to first unread message

bruc...@gmail.com

unread,
Oct 13, 2005, 10:36:49 PM10/13/05
to 星星爱CPP
#include <fstream>
#include <iterator>
#include <vector>
#include <algorithm>
#include <iostream>
#include <iomanip>
using namespace std;

int main( void )
{
vector<char> v1;
vector<char> v2;
vector<char> v3;
fstream file1( "D:\\test.txt", ios_base::in );
fstream file2( "D:\\test.txt", ios_base::in );
fstream file3( "D:\\test.txt", ios_base::binary | ios_base::in );

istream_iterator<char> iter_f1( file1 );
copy( iter_f1, istream_iterator<char>(), back_inserter(v1) );
istreambuf_iterator<char> iter_f2( file2 );
copy( iter_f2, istreambuf_iterator<char>(), back_inserter(v2) );
istreambuf_iterator<char> iter_f3( file3 );
copy( iter_f3, istreambuf_iterator<char>(), back_inserter(v3) );

vector<char>::iterator itor;
for( itor=v1.begin(); itor!=v1.end(); ++itor )
cout << setw(2) << setfill('0') << hex << (unsigned)*itor;
cout << "\n------\n";
for( itor=v2.begin(); itor!=v2.end(); ++itor )
cout << setw(2) << setfill('0') << hex << (unsigned)*itor;
cout << "\n------\n";
for( itor=v3.begin(); itor!=v3.end(); ++itor )
cout << setw(2) << setfill('0') << hex << (unsigned)*itor;
cout << "\n------\n";

return 0;
}
// 输出
/* 如果 test.txt 内容为 "abc\r\n123", 则输出结果为:
616263313233
------
6162630a313233
------
6162630d0a313233
------
*/

Reply all
Reply to author
Forward
0 new messages