我有一个长字符串变量,我想在其中搜索特定单词并根据这些单词限制文本。
假设我有以下文字:
“这个令人惊叹的新型可穿戴音频解决方案的特点是在衬衫前部嵌入了一个工作扬声器,可以播放适合任何情况的音乐或音效。就像在自己的电影中主演一样”
和单词:“解决方案”,“电影”。
我想从大字符串中减去(如结果页面中的 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 异常...我不知道如何检查该位置是否存在而不会导致异常!
请帮忙!