0

我正在尝试学习一些从 C++ 中读取文件的技术,我想出了这个例子。

假设以下是我要读取的txt文件的内容

A
1 2 3
4 5 6
7 8 9

B
1 2 3
4 5 6
7 8 9

所以,我在这里要做的是,如果我们读取 A,那么我们开始从下面读取矩阵 A 并将它们存储到 a[i][j] 中。对于 B 也是如此。在其他情况下,我们将它们视为例外,我们现在不在乎。

我现在的问题是混合阅读。我知道如何读取整数以及如何分别从文件中读取字符串,就像愚蠢的方式一样while(fin>>it)。但是谁能告诉我这种混合阅读的快速方法,我不必声明几个阅读变量(类型),如字符串和 int?

例如,我只知道如何读取整行整数,不知道换行处理程序,这意味着我不知道如何识别我们是否到达了行尾或类似的东西:

    ifstream fin;
fin.open(infilename);
int it;
int arr[3][3];
int i=0, j=0;
while(fin>>it){
    arr[i][j]=it; 
      `\\I am confused at this place and don't know how to write the condition`
}
fin.close();

此外,既然有 char 和 int 类型,我必须声明char吗?以及如何fin>>char真正起作用?在一行中逐个字符地读取字符或其他内容?如果有人可以指导我,我将不胜感激!谢谢!

4

1 回答 1

0

您不必担心换行符,因为 >> 会跳过空格和换行符。但是,如果您想要不同的数据类型,将 fin>>it 放在 while 条件中会使事情复杂化。您可以改为读入一个字符来表示每个矩阵,然后在循环中从 fin 读取到矩阵:

char c;
int mat[3][3];

while (fin>>c){
    //save c somewhere
    fin>>mat[0][0]>>mat[0][1]>>mat[0][2];
    fin>>mat[1][0]>>....;
    fin>>mat[2][0]>>....;
    //store mat 
}
于 2013-07-26T21:05:01.997 回答