对不起伙计们,我不得不再问这个问题。我发现了关于这个问题的另一个讨论,但是海报的例子太乱了,我根本无法理解他们的谈话。
我想从字符串中读取每个字符并将这些字符逐个推送到矢量中。到目前为止,我可以做到这一切。除此之外,当在推送之前执行条件语句时,其余值会发生变化。
例如,如果它读取字符串" ABC,DEF"它将在控制台屏幕上返回," A B C。"但它将返回" A B C,D E F"如果没有条件陈述。
std::string temporarydata; std::vector<char> datarow;
std::ifstream inputdata (filename.c_str());
if(inputdata.is_open())
{
while(getline(inputdata,temporarydata))
{
for(int it2=0; it2<temporarydata.length(); it2++)
{
if (temporarydata[it2] != ',')
{
datarow.push_back(temporarydata[it2]);
std::cout << "Temp " << it2 << " is " << temporarydata[it2] << "\n";
std::cout << "Data Rows " << it2 << " is " << datarow[it2] << "\n";
}
}
}
}
我该怎么办?
答案 0 :(得分:3)
您正在阅读vector
的结尾。在索引3处,您跳过print语句,datarow
有3个元素。但是,现在it2 == 3
在您的下一次迭代中,这意味着您尝试在下一个打印语句中从datarow[3]
读取,即使datarow
只有3个元素(在索引0,1处,和2)。因此,你正在打印垃圾。你应该在循环结束后调用print语句,或者使用datarow.back()
(由Neil Kirk建议)而不是你的循环控制变量。