首页 > 解决方案 > 对文件使用 getline()

问题描述

我想知道为什么我的文件输入在我使用getline(). 我试图temp摆脱空间,但这也确实有效。

void getKittenFromFile(string file, roster& kitt) {
  string temp;
  ifstream inFS;
  int i = kitt.size;
  inFS.open(file);
  if (!inFS.is_open()) {
    cout << "Error! File not found." << endl;
  }
  else {
    while (!inFS.eof() && kitt.size < 10) {
      getline(inFS, kitt.kittens[i].name);
      getline(inFS, kitt.kittens[i].color);
      inFS >> kitt.kittens[i].score;
      i++;
      kitt.size++;
    }

该文件如下所示:

Willow
dark brown
66
jack
brown
84
Will
blue
6

标签: c++

解决方案


正如其中一条评论所提到的,getline()由于使用>>. 要解决此问题,您可以使用get()清除单个换行符,或者更完整的解决方案是使用: inFS.ignore(numeric_limits<streamsize>::max(), '\n');


推荐阅读