我有以下代码,最终导致分段错误。
for (int a=0; a<inputFileList.size(); a++)
{
fileLines = readFile(inputFileList[a].c_str());
for (int i = 0; i < fileLines.size(); i++)
{
if (fileLines[i].find("text") != string::npos)
{
bool warnFound = false, errFound = false;
i++;
while (fileLines[i].find("message") == string::npos && i < fileLines.size())
{
if (fileLines[i].find("error") != string::npos)
errFound = true;
else if (fileLines[i].find("warning") != string::npos)
warnFound = true;
i++;
}
i--;
if (errFound)
errCtr++;
else if (warnFound)
warnCtr++;
else
okCtr++;
}
}
fileLines.clear();
}
当我删除while循环时,我不再收到此错误。但我不知道这个循环有什么问题。
感谢您的支持
答案 0 :(得分:6)
应该阅读
while (i < fileLines.size() && fileLines[i].find("message") == string::npos)
答案 1 :(得分:1)
这:
while (fileLines[i].find("message") == string::npos && i < fileLines.size())
应该是:
while (i < fileLines.size() && fileLines[i].find("message") == string::npos )
答案 2 :(得分:0)
我不确定它是否与您收到的错误有关,但您似乎第7行的i++
出现问题。即使{{1} },所以下一行的i == fileLines.size() - 1
将访问一个不存在的项目。