ファイル操作で少し困ったこと

備忘録

ファイル読み込むときに" >> "を使うと

 

>|c|

void readUser(char *fn1){

  ifstream fin;

  string str,s;

  int u,i;

  fin.open(fn1);

  while(!fin.eof()){

    fin >> u >> s;

    VecU.push_back(s);

       }

  }

  for(i=0;i<VecU.size();i++){

    cout << VecU[i] << endl;

  }

}

||<

 

みたいになって

 

>||

1 a

2 b

3 c

||<

 
みたいなデータに対して出力が
 

>||

a

b

c

c

||<

 

みたいな感じになるのが原因がわかってても解決できなかったんだが,ベストアンサーではないだろうけど何とかなった.

 

>|c|

void readUser(char *fn1){

  ifstream fin;

  string str,s;

  int u,i;

  fin.open(fn1);

  while(!fin.eof()){

    fin >> u >> s;

    if(getline(fin,str) != NULL){

    VecU.push_back(s);

       }

  }

  for(i=0;i<VecU.size();i++){

    cout << VecU[i] << endl;

  }

}

||<

 

 

>|c|

void readUser(char *fn1){

  ifstream fin;

  string str,s;

  int u,i;

  fin.open(fn1);

  while(1){

    fin >> u >> s;

    if(fin.eof()==1) break;

    VecU.push_back(s);

  }

  for(i=0;i<VecU.size();i++){

    cout << VecU[i] << endl;

  }

||<

 

でとりあえず動く.