计算.csv中的行时出现循环问题

时间:2011-08-08 18:26:43

标签: c++ csv

我还在努力学习如何使用c ++管理和操作.csv文件。我创建了一个小程序,创建了一个新的.csv文件,用通用标签填写表格标题,所有这些都被命名为“value”用于演示目的。 然后我关闭文件以确保我保存的任何更改。然后我重新打开同一个文件并计算文件中的行数。我再次关闭该文件,现在打开一个文件,其中引用了需要填入新创建文件的值。然后我计算这个文件的行,并将它们与新创建的文件的行数进行比较。如果新文件的行少于参考文件,我需要识别新文件的最后一行,添加一个到该数字,然后读取refrence文件中该数字行的值,然后将值添加到新文件中文件。

现在我遇到了问题。该程序将准确地告诉每个文件有多少行。到目前为止很棒,但是当我试图检查新文件在while循环中是否有更少的行时,它正在做一些事情,只是继续添加行数和在一个if staement它只检查一次。这可能是一个非常愚蠢的错误,我应该将整个程序放在while循环或其他东西但我不希望插入表标题的第一步重复。任何帮助表示赞赏。

我可能没有正确地措辞自己,如果有人对我的看法感到困惑,我会说但是他们认为他们可以帮我解决这个问题,请让我澄清一下。

#include <iostream>
#include <fstream>
#include <string>
#include <cmath>

using namespace std;

int main()
{
    char c;
    int x=0;
    int y=0;
    int loop=1;
    ofstream mynewfile;
    mynewfile.open("MyNewFile.csv");

    if (mynewfile.good())
    {
        mynewfile << "Value,Value,Value,Value,Value,Value," <<endl;
        //End of if mynewfile.good()
    }

    mynewfile.close();

    while(loop==1)
    {
        ifstream mynewfile2;
        mynewfile2.open ("MyNewFile.csv");
        while (mynewfile2.good())
        {
            c = mynewfile2.get();
            if (c=='\n')
                x++;
            //End of while(mynewfile2.good())
        }

        mynewfile2.close();
        ifstream myoldfile;
        myoldfile.open ("MyOldFile.csv");

        while (myoldfile.good())
        {
          c = myoldfile.get();
          if (c=='\n')
              y++;
        }

        myoldfile.close();

        cout << "The Number of lines in the file are " << x << endl;
        cout << "The Number of lines in the file are " << y << endl;

        if(x < y)
        {
          cout << "Keep Going" << endl;
        }
        else if(x = y)
        {
          system("PAUSE");
        }
        else
        {
            loop == 0;
        }
    }

    system("PAUSE");
    return 0;

    //End of main()
}

1 个答案:

答案 0 :(得分:4)

您犯了一个经典的C / C ++错误。这一行:

else if(x = y)

将y的值赋给x。如果y不为零,则计算结果为true。你的意思是:

else if(x == y)