我还在努力学习如何使用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()
}
答案 0 :(得分:4)
您犯了一个经典的C / C ++错误。这一行:
else if(x = y)
将y的值赋给x。如果y不为零,则计算结果为true。你的意思是:
else if(x == y)