从txt文件中读取的一些方法

Some methods of reading from txt files

本文关键字:方法 读取 txt 文件      更新时间:2023-10-16

我正在尝试学习一些从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也是如此。在其他情况下,我们将其视为例外,我们现在不在乎。

我现在的问题是阅读不一。我知道如何分别读取integer和从文件中读取字符串,就像while(fin>>it)那样愚蠢。但是有人能告诉我一种快速的混合读取方法吗?我不必声明几个读取变量(类型),比如string和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?CCD_ 3究竟是如何工作的?在一行中一个字符接一个字符地阅读还是其他什么?如果有人能指导我,我将不胜感激!谢谢

您不必担心换行符,因为>>会跳过空白和换行符。然而,如果您想要不同的数据类型,将fin>>放在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 
}