Привет, я пытаюсь заставить мою программу читать в строке из файла, разбивать ее по пробелу на вектор и затем действовать на этот вектор. Когда я запускаю программу, я получаю указанную выше ошибку, которую Im guessing означает, что im вызывает векторный слот, который не существует. Код, о котором идет речь, ниже, но у меня возникли проблемы с выяснением точной части моей ошибки. Любая помощь будет оценена по достоинству.Ошибка отладки. C++ векторный индекс вне диапазона
while (getline(fin,temp))
{
vector<string> token;
split(token,temp,is_any_of(" "));
// check and print the tokens to new file
for (int i = 0; i < token.size(); i++)
{
string uni = token[i];
string bi = token[i]+" "+token[i+1];
string tri = token[i]+" "+token[i+1]+" "+token[i+2];
if(Filter.check(tri)==true)
{
token[i],token[i+1],token[i+2]==censor;
outputFile<<token[i]<<" "<<token[i+1]<<" "<<token[i+2];
i+3;
}
else if(Filter.check(bi)==true)
{
token[i],token[i+1]==censor;
outputFile<<token[i]<<" "<<token[i+1];
i+2;
}
else if(Filter.check(uni)==true)
{
token[i]==censor;
outputFile<<token[i];
i++;
}
else
outputFile<<token[i];
}
outputFile<<endl;
}
Чтобы понять, что им делать, то программа должна проверить линии для конкретных слов или фраз, замените их цензором, и вывод этих слов в файл.
EDIT: Хорошо, таким образом Ive изменил цикл выглядеть так:
for (int i = 0; i < token.size()-2; i++)
Но я все еще получаю ту же ошибку. Есть идеи?
@ 0x1337: Если он был пуст, петля не запускалась вообще. –
Что должна делать эта строка: 'token [i], токен [i + 1], токен [i + 2] == цензор;'? – dasblinkenlight
Цензор - это строка = "****", и я просто понял, что должно быть = цензор не ==, хотя это не связано с проблемой. – CoreyHall