C ++逐行读取文件(包含空格)中的数据

时间:2017-08-24 07:08:51

标签: c++ file whitespace

我在电路板9x9上编程游戏(这是一个char 9x9数组)。我写了一个方法,根据下面的方案将当前游戏状态保存在一个文件中:

board.plansza[0][0]
board.plansza[0][1]
board.plansza[0][2]
board.plansza[0][3]
(...)
*points in int*

(每行只有一个字符/空格/数字)

现在我需要一种能够读取此文件并将数据放回同一种数组中的方法(如果有人决定停止播放,保存游戏然后想继续以前的状态)作为点的变量。 问题是,保存文件中的某些行只是一个空格('')而且我尝试过的所有方法都因此无法正确读取。

我尝试过的最新方式(失败):

for (int i = 0; i < ROZMIAR; i++){
        for (int j = 0; j < ROZMIAR; j++){
            zapis << board.plansza[i][j] << endl;
        }
    }

zapis << user.pkt << endl;

如果某些行只包含空格(我不想忽略),如何逐行读取文件?

1 个答案:

答案 0 :(得分:3)

使用getline(),如下所示:

#include <fstream>
#include <string>

int main()
{
  std::ifstream infile("thefile.txt");
  std::string line;
  char matrix[10][2];
  int i = 0;
  while(std::getline(infile, line))
  {
      std:cout << line << std::endl;
      if(line .find_first_not_of(' ') != std::string::npos)
      {
          // There's a non-space.
          matrix[i++][0] = line[0];
      }
  }
  return 0;
}