die Zeichenfolge Gegeben:find(cbegin(foo), cend(foo), [](const auto& i) { return isspace(i); })
Wie kann ich eine Zeichenfolge von Whitespaces meines Gebiets abrufen?
Aber ich will die Position: const auto foo = "lorem\tipsum"s
ich einen Iterator auf das Leerzeichen, indem Sie finden können. Ich habe zwei Möglichkeiten:
- Verwendung
distance
:distance(cbegin(foo), find(cbegin(foo), cend(foo), [](const auto& i) { return isspace(i); }))
isspace
nachschlagen und eine hartcodierte Zeichenfolge konstruiert von seinem Inhalt:foo.find_first_of(" \f\n\r\t\v")
Klar ist einfacher, und es wird wieder string::npos
die ich testen muss für, aber ich würde gerne meine locale stellen Sie mir eine Zeichenfolge aus allen Leerzeichen, anstatt harcoding die Zeichenfolge. Gibt es eine Funktion, die ich verwenden könnte, um diese Zeichenfolge zu erhalten, oder eine Möglichkeit, es zu kochen?
* Klar * Option 2 ist einfacher? Huh. Ich finde "Entfernung" einfach gut, obwohl das einfache 'it - cbegin (foo)' auch nicht so schlecht ist. – Voo
@Voo * Offensichtlich *. Ich habe bearbeitet, um die Tatsache hinzuzufügen, dass beim Arbeiten mit Positionen "distance" nervig ist, weil ich auch überprüfen muss, ob es größer ist als 'foo.size()', also kann ich es auf 'string :: npos' setzen Falls benötigt. –
Option 3: Schreiben Sie Ihre eigene Funktion ("first_space" oder etwas Ähnliches), die die 'distance' Methode verwendet und verwenden Sie diese in Ihrem Code. – molbdnilo