【发布时间】:2014-09-21 02:36:26
【问题描述】:
我正在处理文件 io,并且我已经设法将文件中的数据获取到我制作的向量中,但是当我打印这些值时,我在数据的最后一部分之后得到了垃圾数字。所以我猜测它的推入向量中不存在的值,或者它试图打印向量中不存在的部分。任何帮助都会很棒。
main.cpp
#include <iostream>
#include <sstream>
#include <fstream>
#include <vector>
#include <string>
#include "store.h"
using namespace std;
int main ()
{
store data;
ifstream inFile ("C:/Users/Owner/Desktop/Albums.csv");
string line;
string item;
int num;
int itemnum;
int linenum = 1;
ostringstream convert;
string temp;
while (!inFile.eof())
{
while (getline (inFile, line) )
{
istringstream linestream(line);
itemnum = 0;
num = 0;
convert << linenum;
temp = convert.str();
data.addtovectv(temp);
while (getline (linestream, item, ',') )
{
if (itemnum == 1 || itemnum == 2 || itemnum == 3 || itemnum == 5)
{
num++;
data.addtovectfullline(0, item);
}
itemnum++;
}
linenum++;
}
}
data.print();
inFile.close();
return 0;
}
store.h
#ifndef STORE_H
#define STORE_H
#include <iostream>
#include <sstream>
#include <fstream>
#include <vector>
#include <string>
using namespace std;
class store
{
public:
store();
void addtovectv(string);
void addtovectfullline(int, string);
void print();
private:
vector<string> v;
vector< vector<string> > fullline;
};
#endif
store.cpp
#include "store.h"
store::store()
{
}
void store::addtovectv(string a)
{
v.push_back(a);
fullline.push_back(v);
}
void store::addtovectfullline(int a, string c)
{
fullline[a].push_back(c);
}
void store::print()
{
for(unsigned int i=0; i<fullline.size(); i++)
{
for(unsigned int j=0; j<fullline[i].size(); j++)
{
cout << fullline[i][j] << endl;
}
cout << endl;
}
}
编辑:一些示例数据
RS 500 合辑,群星,太阳唱片收藏,308
两个列表,A Tribe Called Quest,The Low End Theory,1991,154,Jive,Skeff Anselm,Zombart JK,美国,48:08:52
两个列表,AC/DC,Back in Black,1980,73,ATCO,Robert John Lange,Bob Defrin,澳大利亚/英国,41:36:52
两个列表,AC/DC,Highway to Hell,1979,199,Albert Productions,Robert John Lange,Bob Defrin 澳大利亚/英国,41:53:52
我需要阅读这些行,但只将第二、第三、第四和第六条信息放入向量中,这就是它最终应该打印的内容,每条信息都在新的一行上。所有数据都存储在 .csv 文件中
有了这个样本数据,我的输出是这个截图:http://puu.sh/bHtHM.png 但是,底部的那些数字都不应该在那里,并且在第一组数据之后有一个奇怪的空格
edit2:意识到奇怪的空间是我要求的数据缺失,所以很好
【问题讨论】:
-
请提供示例输入和预期与实际输出。
-
好的,做到了,抱歉
-
请更清楚您期望的输出的确切格式。逐字粘贴即可。
-
while (inFile.eof())- 永远不会进入这个循环。您的描述与此代码不符。