如何在不使用string类的情况下逐行读取文件? 所以,在C++类中,我们现在不允许使用字符串类。要替换字符串,我们使用字符数组

如何在不使用string类的情况下逐行读取文件? 所以,在C++类中,我们现在不允许使用字符串类。要替换字符串,我们使用字符数组,c++,C++,作业要求我从每行包含一个句子的文件中读取。文件的第一行是一个整数,表示文件中有多少行。 我的第一个问题是,将整数读入变量并在数组中使用该变量会导致一个错误,即变量必须是常量。 我怎样才能克服这一点?我需要一个2D数组来计算每个句子有多少个字符。我想将我的数组初始化为字符文件名[numberOfLines][81]。已决定句子字符上限为80个字符长,因此每行的宽度必须为81,以说明\0 我的第二个问题来自于我如何读取整数。由于文件中的第一行是一个整数,因此我的读取方式如下: int numberO

作业要求我从每行包含一个句子的文件中读取。文件的第一行是一个整数,表示文件中有多少行。 我的第一个问题是,将整数读入变量并在数组中使用该变量会导致一个错误,即变量必须是常量。 我怎样才能克服这一点?我需要一个2D数组来计算每个句子有多少个字符。我想将我的数组初始化为
字符文件名[numberOfLines][81]
。已决定句子字符上限为80个字符长,因此每行的宽度必须为81,以说明\0

我的第二个问题来自于我如何读取整数。由于文件中的第一行是一个整数,因此我的读取方式如下:

int numberOfLines;
ifstream fin;
fin.open("TestTextFile.txt");
fin >> numberOfLines;
这会起作用,它会将变量
numberOfLines
设置为正确的值。然而,当我调用
fin.getline
时,它接下来将读取的内容是一个空白。如果我再次调用
fin.getline
,它就是文件的第一句话。是否有其他方法读取整数以防止出现这种情况,或者我应该在内存中设置一个空句子来保存第一个
fin.getline
值,然后继续将句子读取到数组中

我需要一个2D数组来计算每个句子有多少个字符。我 要将我的数组初始化为char filements[numberOfLines][81]

简单的解决方案是分配您需要的:

typedef char LINE[81];
LINE* FileSentences = new LINE[numberOfLines];
在完成对FileEntence的迭代后,按如下方式释放内存:

delete [] FileSentences;

对于第一个问题,请使用
std::vector

// Define a typedef for a line.
typedef char Line[81];

// Read the number of lines.
fin >> numberOfLines;

// Define a vector for the lines.
std::vector<Line> lines(numberOfLines);
确保添加

#include <limits>
#包括

要使用
std::numeric\u limits

必须在编译时知道C样式数组的大小。尝试使用向量。
#include <limits>