【发布时间】:2014-06-17 17:31:46
【问题描述】:
首先我会说我是一个相当新的 C++ 程序员。 不过我懂 PHP 和 VBA,所以对编程基础的各个方面都有很好的了解。
因为我在日常工作中经常使用 CSV,所以我认为编写一个操作 CSV 文件的库是一个很好的学习练习。
我写了这个函数:
int getHeaders(ifstream & os, vector<string> & head2){
string STRING;
getline(os,STRING);
cout << STRING << endl;
STRING.erase(remove(STRING.begin(), STRING.end(), '\"'), STRING.end());
string::iterator it = STRING.begin();
int x = 0;
for (int index = 0; it < STRING.end(); it++, index++) {
if (*it == ',') {
head2.push_back(STRING.substr(0,index));
STRING.erase(0,index+1);
cout << endl << head2[x];
cout << endl << STRING;
x++;
}
}
return head2.size();
}
由以下调用:
int addRowCount = 0;
vector<string> head1;
ifstream outfile;
outfile.open("default.csv", ios_base::app);
cout << getHeaders(outfile, head1) << endl;
cout << head1[0] << endl << head1[1] << endl;
但是当我运行程序时,程序只是将一堆随机垃圾转储到控制台(并使应用程序崩溃) 我使用的是 windows,所以不能使用 valgrind。
有谁知道为什么会发生这种情况?显然这个“转储”不是我希望应用程序做的。我希望有人能指出我的代码中会导致这种情况发生的部分。
提前致谢。
【问题讨论】:
-
你觉得这有什么关系?我没有使用任何结构。请记住,我是 C++ 新手,只是在寻找一些指针?
-
@rhysowen 当
default.csv在正确的目录中找不到时,你的程序会做什么? -
@Drew Dormann 目前,什么都没有,因为我目前处于“概念”阶段。但是“default.csv”确实存在(事实上,该程序的另一部分创建并写入了它)
-
@rhysowen '你觉得这有什么关系?'检查这个关于读取字符分隔文本格式的抽象的答案:stackoverflow.com/a/23070803/1413395
标签: c++ windows mingw codeblocks dump