我正在尝试为C ++编写一个例程,以读取如下所示的输入文件,
1 12 13 0 0 1 0 INLE
2 1 12 0 0 1 0 INLE
3 11 2 0 0 1 0 INLE
4 13 11 0 0 1 0 INLE
5 2 8 0 0 2 0 OUTL
6 8 9 0 0 2 0 OUTL
7 9 10 0 0 2 0 OUTL
8 10 3 0 0 2 0 OUTL
9 4 5 0 0 3 0 SYMP
10 5 6 0 0 3 0 SYMP
11 6 7 0 0 3 0 SYMP
12 7 1 0 0 3 0 SYMP
13 14 4 0 0 4 0 WALL
14 16 14 0 0 4 0 WALL
15 15 16 0 0 4 0 WALL
16 3 15 0 0 4 0 WALL
在这种情况下,我必须将第二列和第三列的值赋给右边最后一列指定的条件。
就像是,
read the last column;
if it reads the word INLE
{
asign the values of COLUMN2 and COLUMN3 to the pointer &p_InflowNode[i];
}
if it reads the word OUTL
{
asign the values of COLUMN2 and COLUMN3 to the pointer &p_NonrefNode[i];
}
etc...
所以我的主要问题是,如何使C ++首先读取最后一列,然后决定如何处理第二和第三列的值?
解冻
最佳答案
我建议你这样做
struct CData
{
int nC1;
int nC2;
int nC3;
int nC4;
int nC5
int nC6;
int nC7;
string sMode;
friend ifstream& operator >>(ifstream&, struct& CData);
}
您只需要重载输入运算符,然后
声明该结构的对象并对其进行处理:
struct CData cObj;
ifstream ifIn;
ifIn.open("yourfile.txt");
while(ifIn)
{
ifIn>>cObj;
//now you can use the nested if and else structure here
}