C++ 读取.csv文件C++;

C++ 读取.csv文件C++;,c++,csv,atoi,C++,Csv,Atoi,当我的代码到达“atoi”函数时,它的执行会崩溃,但我不明白为什么。 代码应该从.csv文件中读取矩阵,考虑到: -第一行(直到第一个“\n”)并将每个元素(由“,”分隔)保存在整数向量中;-矩阵的其余部分,通过查看每个元素并创建一个特定对象(如果读取的数字为1或2)。 我在调试程序时没有遇到任何异常,只是在执行过程中崩溃了(使用系统(“暂停”),我可以确定是atoi函数工作不正常)。 你能帮我了解出了什么问题吗? 非常感谢你。 附言:我还附上了我正在加载的所有库。。。也许它能帮上忙:) #包括

当我的代码到达“atoi”函数时,它的执行会崩溃,但我不明白为什么。 代码应该从.csv文件中读取矩阵,考虑到: -第一行(直到第一个“\n”)并将每个元素(由“,”分隔)保存在整数向量中;-矩阵的其余部分,通过查看每个元素并创建一个特定对象(如果读取的数字为1或2)。 我在调试程序时没有遇到任何异常,只是在执行过程中崩溃了(使用系统(“暂停”),我可以确定是atoi函数工作不正常)。 你能帮我了解出了什么问题吗? 非常感谢你。 附言:我还附上了我正在加载的所有库。。。也许它能帮上忙:)

#包括
#包括
#包括
#定义空ptr 0
#包括
#包括“h类”
#包括
#包括
#包括
#包括
使用名称空间std;
int main(int argc,char*argv[]){
ifstream文件(“problem.csv”);
无符号整数N=0;
无符号整数M=0;
char c;//修改char*c;
无符号整数i=0,j=0,k=0,n_iter,j_temp=0;
std::向量v_行;
标准:向量向量向量温度;
std::vector iter;//要保存与.csv文件第一行元素对应的int的位置//
std::string iterazioni;//我希望将第一行保存为字符串,然后将其切块(iteraz),然后转换(atoi-->iter)的位置
std::string iteraz;
而(!file.eof()){
std::getline(文件,iterazioni,'\n');
stringstream it(iterazioni);
而(it.good()){
std::getline(it,iteraz,,);
iter[k]=atoi(iteraz.c_str());

如果(iter[k]您的程序因未能初始化
iter
向量的内容而崩溃

std::vector<int> iter; // location where I want to save the ints corresponding to the elements of the first row of the .csv file //
k
的初始值为0,因此尝试将
atoi()
的返回值分配给
iter[0]

当然,问题是没有
iter[0]
。此时
iter
向量仍然是空的

在stackoverflow.com上的此类问题中,至少有50%是这样的,令人遗憾的是,还有其他评论:

1) “使用名称空间std”是


2)不要使用,如你在你的问题中提到的。

你可以使用“Sttol”来获得完整性测试的结束指针,在修复其他问题之后,你也可以考虑非常感谢,我马上就改正。不幸的是,我没有使用C++的指令(即使我在工程学硕士学位之后……)所以我不得不全部尝试。你能解释一下为什么它们都是不好的做法吗?再次感谢你的帮助。在链接的文章中详细解释了这是不好的做法的原因。试着点击链接,进一步阅读。我能再问你一件事吗?说std::vector iter;只是为n空向量?(因此我应该只执行类似于:std::vector iter(0)或iter[0]=0的操作)再次感谢!抱歉,我正在用一个愚蠢的旧黑莓阅读,无法看到链接!以下向量方法通过添加内容来增加数组的大小:push_back()、resize()和insert()通过阅读任何C++教程,你可以找到更多的信息。
std::vector<int> iter; // location where I want to save the ints corresponding to the elements of the first row of the .csv file //
iter[k] = atoi(iteraz.c_str());