У меня есть длинная строковая переменная, и я хочу найти в ней определенные слова и ограничить текст в соответствии с этими словами.
Скажите, у меня есть следующий текст:
" Это удивительное новое носимое звуковое решение оснащено рабочим динамиком, встроенным в переднюю часть рубашки, и может воспроизводить музыку или звуковые эффекты, подходящие для любой ситуации. Это все равно что сниматься в собственном фильме "
и слова: «решение», «фильм».
Я хочу вычесть из большой строки (как Google на странице результатов):
"... новое носимое аудио решение имеет встроенный рабочий динамик ..."
а также
"... как в главной роли в вашем собственном фильме "
для этого я использую код:
for (std::vector<string>::iterator it = words.begin(); it != words.end(); ++it)
{
int loc1 = (int)desc.find( *it, 0 );
if( loc1 != string::npos )
{
while(desc.at(loc1-i) && i<=80)
{
i++;
from=loc1-i;
if(i==80) fromdots=true;
}
i=0;
while(desc.at(loc1+(int)(*it).size()+i) && i<=80)
{
i++;
to=loc1+(int)(*it).size()+i;
if(i==80) todots=true;
}
for(int i=from;i<=to;i++)
{
if(fromdots) mini+="...";
mini+=desc.at(i);
if(todots) mini+="...";
}
}
но desc.at (loc1-i) вызывает исключение OutOfRange ... Я не знаю, как проверить, существует ли эта позиция, не вызывая исключение!
Помогите пожалуйста!