私は長い文字列変数を持っており、その中で特定の単語を検索し、それらの単語に従ってテキストを制限したいと考えています。
次のテキストがあるとします。
"この驚くべき新しいウェアラブル オーディオ ソリューションは、シャツの前面に埋め込まれた実用的なスピーカーを備えており、あらゆる状況に適した音楽や効果音を再生できます。自分の映画に出演しているようなものです"
そして言葉:「解決策」、「映画」。
大きな文字列 (結果ページの 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 例外を引き起こします...例外を引き起こさずにその位置が存在するかどうかを確認する方法がわかりません!
助けてください!