我正在尝试学习一些用C ++读取文件的技巧,我想出了这个例子。
假设以下是我想要从
中读取的txt文件的内容A
1 2 3
4 5 6
7 8 9
B
1 2 3
4 5 6
7 8 9
所以,我想在这里做的是,如果我们读A,那么我们开始从下面读取矩阵A并将它们存储到[i] [j]中。对于B.同样如此。在其他情况下,我们将它们视为例外,我们现在不在乎。
现在我的问题是混合阅读。我知道如何读取整数以及如何分别从文件中读取字符串,如愚蠢的方式while(fin>>it)
。但是,任何人都可以告诉我这种混合阅读的快速方式,我不必声明几个读取变量(类型),如字符串和int?
例如,我只知道如何读取整行中的整数并且不知道换行符处理程序,这意味着我不知道如何识别是否到达行尾或类似的东西:< / p>
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
如何真正起作用?通过字符串或其他东西读取char?
如果有人可以指导我,我真的很感激!谢谢!
答案 0 :(得分:0)
您不必担心换行符&gt;&gt;跳过空白和换行符。但是,如果您需要不同的数据类型,将fin&gt;&gt;它放入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
}