我有一個vector<string> vectorStrings
與值:ta, bc, ac, st, cer, cda
。我想要查找輸入字符串中矢量中任何字符串的第一次出現。找到第一個出現的字符串從一個向量<string>
例如
InputStr = "this certainly helps";
在載體中給出一個字符串,我會想辦法說"cer"
在5
位置第一次出現。
int min = 9999999;
string first;
for(int i = 0; i < vectorStrings.size(); i++)
{
int pos = InputStr.find(vectorStrings[i]);
if(pos == string::npos)
continue;
if(pos < min)
{
min = pos;
first = vectorStrings[i];
}
}
// values of min and first gives which string occurred first
// and at the position of it in the input string
這個實現的作品,但我想知道,如果存在一個更優雅的方式與Boost庫或std庫做到這一點。
我的工作在Windows和使用Visual Studio 2010
我不知道優雅,但我認爲,外環應去了字符串和內部循環(在你的情況 - 查找)在你的向量中的字符串。我認爲這會更有效 – 2011-12-22 21:38:53
你可以讓min'string :: size_type min = string :: npos;'(這也可能讓你擺脫'pos == npos'測試)。 – UncleBens 2011-12-22 21:46:28
你可以使用迭代器。 ;) – 2011-12-22 22:14:41