C++ 是否跳过重复值的文件I/O?

C++ 是否跳过重复值的文件I/O?,c++,C++,当前正在读取一个文件,其中包含大约42000条记录。虽然我的向量似乎总是达到21000。通过调试,它似乎跳过了重复的值。与数据示例一样,第三列中有3个59。贯通输入只有一个,然后转到58 Data Example: 20070906_NO@IND 1 59 55 IND NO 1 10 68 20070906_NO@IND 1 59 49 IND NO 2 10 68 20070906_NO@IND 1 59 15 IND NO 3 3 61 2

当前正在读取一个文件,其中包含大约42000条记录。虽然我的向量似乎总是达到21000。通过调试,它似乎跳过了重复的值。与数据示例一样,第三列中有3个59。贯通输入只有一个,然后转到58

Data Example:
20070906_NO@IND 1   59  55  IND NO  1   10  68
20070906_NO@IND 1   59  49  IND NO  2   10  68
20070906_NO@IND 1   59  15  IND NO  3   3   61
20070906_NO@IND 1   58  55  IND NO  3   8   66
20070906_NO@IND 1   58  49  IND NO  4   8   66


{
ifstream infile;
infile.open ("2007.csv");

while (infile.fail())
{
    cout << "Invalid File Name, Please Try Again. /n Filename: ";
    cin >> FileName;
    infile.open(FileName);
}

while(!infile.eof())
{       
    while (getline(infile,STRING, '\n'))
    {
        infile.ignore(',', ',');
        getline(infile,tempQuarter, ',');
        getline(infile,tempMinuteRemaining, ',');
        infile.ignore(',', ',');
        getline(infile,tempOffenseName, ',');
        getline(infile,tempDefenseName, ',');
        getline(infile,tempDown, ',');
        getline(infile,tempYardToGo, ',');
        getline(infile,tempNextYardLocation, ',');      

                    //Assign data to Vectors
        AssignToVector(tempQuarter,tempMinuteRemaining,tempOffenseName, tempDefenseName, tempDown, tempYardToGo, tempNextYardLocation, tempPlayDescription);
    }
}
cout << "Reading Completed"<<endl;  
infile.close(); 
数据示例:
20070906_NO@IND15955工业编号11068
20070906_NO@IND1 59 49 IND NO 2 10 68
20070906_NO@IND1 59 15 IND NO 3 3 61
20070906_NO@IND1 58 55 IND NO 3 8 66
20070906_NO@IND1 58 49 IND NO 4 8 66
{
河流充填;
infle.open(“2007.csv”);
while(infle.fail())
{
cout>文件名;
infile.open(文件名);
}
而(!infle.eof())
{       
while(getline(填充,字符串,'\n'))
{
忽略(“,”,“,”);
getline(infle,tempQuarter,',');
getline(填充,tempMinuteMaining,',');
忽略(“,”,“,”);
getline(infle,tempOffenseName,,);
getline(infle,name,,);
getline(infle,tempDown,,);
getline(infle,tempYardToGo,',');
getline(infle,tempNextYardLocation,',');
//将数据分配给向量
AssignToVector(tempQuarter、tempMinuteMaining、tempOffenseName、tempDefenseName、tempDown、tempYardToGo、tempNextYardLocation、tempPlayDescription);
}
}
你有这个吗

while (getline(infile,STRING, '\n'))
它将一行读入
字符串

那么这个,

{
    infile.ignore(',', ',');
    getline(infile,tempQuarter, ',');
    getline(infile,tempMinuteRemaining, ',');
    infile.ignore(',', ',');
    getline(infile,tempOffenseName, ',');
    getline(infile,tempDefenseName, ',');
    getline(infile,tempDown, ',');
    getline(infile,tempYardToGo, ',');
    getline(infile,tempNextYardLocation, ',');      
它读取由逗号分隔的一组字段

据我所见,结果是每隔一行被读入
STRING
,每隔一行被读入
tempXxx
字段

可能是想做一些事情,比如:

stringstream ss(STRING);
ss.ignore(100, ',');
getline(ss, tempQuarter, ',');
... 
你有这个:

while (getline(infile,STRING, '\n'))
它将一行读入
字符串

那么这个,

{
    infile.ignore(',', ',');
    getline(infile,tempQuarter, ',');
    getline(infile,tempMinuteRemaining, ',');
    infile.ignore(',', ',');
    getline(infile,tempOffenseName, ',');
    getline(infile,tempDefenseName, ',');
    getline(infile,tempDown, ',');
    getline(infile,tempYardToGo, ',');
    getline(infile,tempNextYardLocation, ',');      
它读取由逗号分隔的一组字段

据我所见,结果是每隔一行被读入
STRING
,每隔一行被读入
tempXxx
字段

可能是想做一些事情,比如:

stringstream ss(STRING);
ss.ignore(100, ',');
getline(ss, tempQuarter, ',');
... 

我猜想示例输入缺少一些逗号?而且,对
infle.ignore(',',',')
的调用可能不是您想要的…这意味着在找到逗号之前忽略,但最多是
(int)“,”
characters…@DavidRodríguez dribeas:我想象每隔一行读一行到
STRING
,每隔一行读一行到
tempXxx
字段都与缺少的字段有关。我想,特别是第二个答案,会提供相当多的信息。我想象样本输入缺少一些逗号?还有,c
infle.ignore(“,”,“,”,“)
的所有内容可能不是您想要的…这意味着在找到逗号之前忽略,但最多是
(int)“,”
characters…@DavidRodríguez dribeas:我想象每隔一行读一行到
STRING
,每隔一行读一行到
tempXxx
字段都会与缺少的字段有关。我想,特别是第二个答案,会提供相当多的信息。这回答了这个问题。谢谢大家。来自C#,C+文件阅读器对我来说是一个完全不同的动物。这就回答了这个问题。感谢很多人。来自C语言,C++文件阅读器对我来说是一个完全不同的动物。