C++ 是否跳过重复值的文件I/O?
当前正在读取一个文件,其中包含大约42000条记录。虽然我的向量似乎总是达到21000。通过调试,它似乎跳过了重复的值。与数据示例一样,第三列中有3个59。贯通输入只有一个,然后转到58C++ 是否跳过重复值的文件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
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
字段都与缺少的字段有关。我想,特别是第二个答案,会提供相当多的信息。我想象样本输入缺少一些逗号?还有,cinfle.ignore(“,”,“,”,“)
的所有内容可能不是您想要的…这意味着在找到逗号之前忽略,但最多是(int)“,”
characters…@DavidRodríguez dribeas:我想象每隔一行读一行到STRING
,每隔一行读一行到tempXxx
字段都会与缺少的字段有关。我想,特别是第二个答案,会提供相当多的信息。这回答了这个问题。谢谢大家。来自C#,C+文件阅读器对我来说是一个完全不同的动物。这就回答了这个问题。感谢很多人。来自C语言,C++文件阅读器对我来说是一个完全不同的动物。