使用C++逐行从包含空格的文件中读取数据

4

我正在编写一个在9x9棋盘上运行的游戏(使用char二维数组实现)。我编写了一个方法,按照以下方案将当前游戏状态保存到文件中:

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;

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


2
当(std::getline(fileStream, lineString))时{ // 做一些事情 } - BoBTFish
1个回答

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;
}

"\n" 可能不足以触发输出,请尝试使用 std::endl。它会打印一个新行并执行刷新操作。 - Davidbrcz
@Davidbrcz,回答已更新,感谢您的点赞! - gsamaras
@Ania,那么您需要更新您的问题,包括您想要使用的数据结构(例如,您的矩阵是否像int arr [4] [5]这样?)和一个示例小文本文件。 - gsamaras
@gsamaras 我已经更新了,希望我包含了你所需的一切。 - Ania
@gsamaras 感谢您的所有帮助,但它不起作用。出于某种原因,它还会使我的程序结束(之后有一个方法,无论读取是否成功,都应该让您返回游戏)。我认为最简单的方法就是用其他东西填充数组而不是空格,一些字符。它看起来可能不太好,但我不认为我的老师会介意那么多。 - Ania
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接