C++ 分析文件时getline出现分段错误

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 #################### ###

我正在制作一个非常简单的CSV格式的文件解析器。编译运行顺利,当我运行它时,我有一个segfault(内核转储)。唯一打印的行是告诉“完成”的行,表示文件已成功打开。所以我猜Segfault发生在
期间(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({});
   }