#include <algorithm>
#include <iostream>
#include <iterator>
#include <sstream>
#include <string>
#include <vector>
using namespace std;
int main() {
const auto first = "Somebody"s;
const auto second = "words"s;
const vector<string> words = { "in"s, "lorem"s, "ipsum"s };
const auto input = "Somebody has typed in some words here."s;
const auto start = input.find(first) + first.size();
const auto finish = input.find(second, start);
if (start != string::npos && finish != string::npos) {
istringstream range(input.substr(start, finish - start));
if (none_of(istream_iterator<string>(range), istream_iterator<string>(), [&](const auto& i) { return find(cbegin(words), cend(words), i) != cend(words); })) {
cout << "match\n";
} else {
cout << "not a match\n";
}
} else {
cout << "not a match\n";
}
}
I2luY2x1ZGUgPGFsZ29yaXRobT4KI2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8aXRlcmF0b3I+CiNpbmNsdWRlIDxzc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8dmVjdG9yPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmludCBtYWluKCkgewoJY29uc3QgYXV0byBmaXJzdCA9ICJTb21lYm9keSJzOwoJY29uc3QgYXV0byBzZWNvbmQgPSAid29yZHMiczsKCWNvbnN0IHZlY3RvcjxzdHJpbmc+IHdvcmRzID0geyAiaW4icywgImxvcmVtInMsICJpcHN1bSJzIH07Cgljb25zdCBhdXRvIGlucHV0ID0gIlNvbWVib2R5IGhhcyB0eXBlZCBpbiBzb21lIHdvcmRzIGhlcmUuInM7Cgljb25zdCBhdXRvIHN0YXJ0ID0gaW5wdXQuZmluZChmaXJzdCkgKyBmaXJzdC5zaXplKCk7Cgljb25zdCBhdXRvIGZpbmlzaCA9IGlucHV0LmZpbmQoc2Vjb25kLCBzdGFydCk7CgoJaWYgKHN0YXJ0ICE9IHN0cmluZzo6bnBvcyAmJiBmaW5pc2ggIT0gc3RyaW5nOjpucG9zKSB7CgkJaXN0cmluZ3N0cmVhbSByYW5nZShpbnB1dC5zdWJzdHIoc3RhcnQsIGZpbmlzaCAtIHN0YXJ0KSk7CgoJCWlmIChub25lX29mKGlzdHJlYW1faXRlcmF0b3I8c3RyaW5nPihyYW5nZSksIGlzdHJlYW1faXRlcmF0b3I8c3RyaW5nPigpLCBbJl0oY29uc3QgYXV0byYgaSkgeyByZXR1cm4gZmluZChjYmVnaW4od29yZHMpLCBjZW5kKHdvcmRzKSwgaSkgIT0gY2VuZCh3b3Jkcyk7IH0pKSB7CgkJCWNvdXQgPDwgIm1hdGNoXG4iOwoJCX0gZWxzZSB7CgkJCWNvdXQgPDwgIm5vdCBhIG1hdGNoXG4iOwoJCX0KCX0gZWxzZSB7CgkJY291dCA8PCAibm90IGEgbWF0Y2hcbiI7Cgl9Cgp9