C++ 分析文件时getline出现分段错误
我正在制作一个非常简单的CSV格式的文件解析器。编译运行顺利,当我运行它时,我有一个segfault(内核转储)。唯一打印的行是告诉“完成”的行,表示文件已成功打开。所以我猜Segfault发生在C++ 分析文件时getline出现分段错误,c++,segmentation-fault,C++,Segmentation Fault,我正在制作一个非常简单的CSV格式的文件解析器。编译运行顺利,当我运行它时,我有一个segfault(内核转储)。唯一打印的行是告诉“完成”的行,表示文件已成功打开。所以我猜Segfault发生在期间(getline(myfile,line)) 这是我的代码(parser.cpp): 和我的testfile.csv version;1.3 ###### SPECIE ###### SpecieID;Value1 VariantID;Value2 #################### ###
期间(getline(myfile,line))
这是我的代码(parser.cpp
):
和我的testfile.csv
version;1.3
###### SPECIE ######
SpecieID;Value1
VariantID;Value2
####################
##### IDENTITY #####
Name;Value3
DOName;Value4
####################
所有文件都在同一文件夹中
你知道我为什么有这个毛病吗
谢谢这里有一个明显的错误,您访问向量的元素时超出了范围。访问越界元素是未定义的行为
else
{
vector <string> tmptokens;
if(verbose)
cout << "Adding token " << tmptokens[0] << " and its values.";
tokens.push_back(tmptokens);
}
无需从C++11开始手动创建一个空向量。这里有一个明显的错误,即访问向量的元素超出范围。访问越界元素是未定义的行为
else
{
vector <string> tmptokens;
if(verbose)
cout << "Adding token " << tmptokens[0] << " and its values.";
tokens.push_back(tmptokens);
}
无需手动创建从C++11开始的空向量。
谢谢,我(愚蠢)的错误。未定义的行为。访问一个超出边界的元素可以做到这一点。cout谢谢,我的(愚蠢的)错误。未定义的行为。访问超出边界的元素可以做到这一点。
else
{
vector <string> tmptokens;
if(verbose)
cout << "Adding token " << tmptokens[0] << " and its values.";
tokens.push_back(tmptokens);
}
else
{
if(verbose)
cout << "Adding new token and its values.";
tokens.push_back({});
}