C++相談室 part88
■ このスレッドは過去ログ倉庫に格納されています
0606デフォルトの名無しさん
2011/04/08(金) 13:08:20.51#include <fstream>
#include <time.h>
#define bufSize (1<<20)
using namespace std;
char *buf;
void vecset1(char *fn, vector<string> &vec) {
fstream fp(fn); string line; vec.resize(0);
while(getline(fp, line)) vec.push_back(line);
fp.close(); }
void vecset2(char *fn, vector<string> &vec) {
FILE *fp = fopen( fn , "rb" ); vec.resize(0);
int readiti=0, enditi;
while ( !feof(fp) ) {
enditi = readiti + fread( &buf[readiti], 1, bufSize-readiti, fp);
char *p=&buf[0], *q, *endp=&buf[enditi];
while(1) {
for( q=p; q!=endp; q++ ) if(*q=='\n' || *q=='\r') break; if(q==endp) break;
if(q!=p) vec.push_back( string(p,q-p) );
p=q+1; }
readiti=(int)(endp-p); memmove(buf, p, readiti); }
vec.push_back( string(buf,readiti) );
fclose(fp); }
int main() {
buf=new char[bufSize]; char *fn="sample.txt"; vector<string> vec; int cl;
cl=clock(); vecset2( fn, vec ); cout<<(clock()-cl)<<endl;
cl=clock(); vecset1( fn, vec ); cout<<(clock()-cl)<<endl; }
■ このスレッドは過去ログ倉庫に格納されています