我正在尝试为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
}

09-30 13:54