Muszę sprawdzić, czy std: string zaczyna się od "xyz". Jak to zrobić bez przeszukiwania całego łańcucha lub tworzenia tymczasowych łańcuchów z substr().std :: porównanie ciągów (sprawdź, czy ciąg zaczyna się od innego ciągu)
Odpowiedz
użyłbym porównać metoda:
std::string s("xyzblahblah");
std::string t("xyz")
if (s.compare(0, t.length(), t) == 0)
{
// ok
}
Czuję, że nie w pełni rozumiem twoje pytanie. Wygląda na to, że powinno być trywialnie:
s[0]=='x' && s[1]=='y' && s[2]=='z'
To dotyczy tylko (najwyżej) pierwszych trzech znaków. Uogólnienie na sznurku, który jest znany w czasie kompilacji będzie wymagać, aby zastąpić wyżej z pętlą:
// look for t at the start of s
for (int i=0; i<s.length(); i++)
{
if (s[i]!=t[i])
return false;
}
Spójrz na impuls za String Algo biblioteki, która posiada szereg przydatnych funkcji, takich jak starts_with, istart_with (niewrażliwy przypadek), itd. Jeśli chcesz użyć tylko część bibliotek Boost w projekcie, a następnie można użyć narzędzia bcp skopiować tylko potrzebne pliki
podejście to może być więcej trzymanie się duchem Biblioteki Standardowej byłoby zdefiniowanie własnego algorytmu zaczynającego od algorytmu.
#include <algorithm>
using namespace std;
template<class TContainer>
bool begins_with(const TContainer& input, const TContainer& match)
{
return input.size() >= match.size()
&& equal(match.begin(), match.end(), input.begin());
}
Daje to prostszy interfejs do kodu klienta i jest kompatybilny z większością pojemników Biblioteka standardowa.
- 1. Sprawdź, czy ciąg "zaczyna się od" innego ciągu w klasycznej ASP?
- 2. Jak sprawdzić, czy ciąg zaczyna się od innego w bash?
- 3. Jak sprawdzić, czy ciąg zaczyna się od innego ciągu w C?
- 4. Dlaczego ciąg "\ u0022" zaczyna się od tego ciągu "\ u204D"
- 5. jquery sprawdź, czy ciąg zaczyna się od 1234
- 6. Sprawdź, czy zmienna wsadowa zaczyna się od "..."
- 7. Sprawdź, czy zmienna zaczyna się od "http"
- 8. Sprawdź, czy ciąg zawiera wszystkie znaki innego ciągu w Ruby
- 9. Jak znaleźć, jeśli ciąg zaczyna się od innego ciągu w Ruby?
- 10. C++ 11 regex: sprawdzanie, czy ciąg zaczyna się od regex
- 11. Czy jakikolwiek element listy zaczyna się od ciągu?
- 12. bash: jak sprawdzić, czy ciąg zaczyna się od "#"?
- 13. Używanie Regexp do sprawdzania, czy ciąg zaczyna się od spółgłoski
- 14. ustal, czy ciąg wartości kolumny zaczyna się od numeru
- 15. KSH sprawdź, czy ciąg rozpoczyna się od podłańcucha
- 16. Sprawdź, czy ciąg jest w ArrayList ciągów
- 17. Wyrażenie regularne dla ciągu, który nie zaczyna się od sekwencji
- 18. Wyszukiwanie w języku SQL, gdzie ciąg zaczyna się od X
- 19. C++ std :: map <std :: string, int> uzyskać wartości, których klucz zaczyna się od określonego ciągu znaków
- 20. Porównanie ciągów w Go
- 21. freemarker - porównanie ciągów - operator niedozwolony
- 22. Sprawdź za pomocą jquery, czy wynik/echo z PHP zaczyna się od "abc"
- 23. Sprawdź, czy ciąg rozpoczyna się od http za pomocą kodu JavaScript
- 24. dlaczego polecenie windbg zaczyna się od. lub!
- 25. Jakiego rodzaju odpowiedź json zaczyna się od)]} '
- 26. Ruby Sprawdź warunek, czy ciąg zawiera wiele różnych ciągów znaków?
- 27. Znajdź, czy ciąg jest obecny wewnątrz innego ciągu w Pig
- 28. Indeksowanie tablicy PLPGSQL zaczyna się od 1?
- 29. clojure: Skuteczne określanie, czy ciąg znaków zaczyna się od dowolnego prefiksu w zbiorze
- 30. Jaki jest najskuteczniejszy sposób sprawdzenia, czy ciąg zaczyna się od określonej litery w TCL?
Zapomniałem o porównaniu - jest to najlepsza metoda, ale nie ma potrzeby używania c_str (0, aby uzyskać ciąg znaków –
Możesz również napisać ciąg s ("xyz") == "xyz. :) – Skurmedel
Neil, masz absolutną rację, edytowałem odpowiedź i usunąłem c_str() zadzwoń – Wacek