Operator S. schrieb:
> Was gibt es für Möglichkeiten die iteration zu beenden, sobald der
> "text" gefunden wurde?
> for(std::vector<std::string>::iterator it
Wenn es so ähnlich sein soll:
1 | for(const auto& s : prefixes)
|
2 | {
|
3 | if(s.find("text") != std::string::npos)
|
4 | {
|
5 | std::cout << s << std::endl;
|
6 | break;
|
7 | }
|
8 | }
|
Falls du es es als eigene Funktion haben willst - Name, mehrfacher
Gebrauch, ... - vielleicht in dieser Art:
1 | template <typename C>
|
2 | auto find(const C& container, typename const C::value_type& token)
|
3 | {
|
4 | return std::find_if(cbegin(container), cend(container),
|
5 | [&token](const auto& s)
|
6 | {
|
7 | return s.find(token) != std::string::npos;
|
8 | });
|
9 | }
|
10 |
|
11 | // ...
|
12 |
|
13 | auto fIt = find(prefixes, "text");
|
14 | if(fIt != cend(prefixes)) std::cout << *fIt << std::endl;
|
Die Innereien sind von oben geklaut. Als Template, damit es auch mit
anderen Strings (wstring) funktioniert. Nur als Beispiel, man kann es
sicher besser machen.
Klaus W. schrieb:
> ja, aber erst mit C++11
Stimmt schon, aber ich denke, dass man ohne expliziten Hinweis des TO
vom aktuellen Standard ausgehen sollte - also momentan C++14 (minus
einiger weniger Features, die noch nicht durchweg in den "großen 4"
implementiert sind). Zumindest im Unterforum "PC-Programmierung".