visual two strings example comparar c++ string stl compare

c++ - two - std:: string comparison(verificar si string comienza con otra cadena)



string compare c++ example (4)

Consulte la biblioteca Boost''s String Algo , que tiene varias funciones útiles, como starts_with, istart_with (sin distinción entre mayúsculas y minúsculas), etc. Si desea usar solo una parte de las bibliotecas de boost en su proyecto, puede usar la utilidad bcp para copiar solo archivos necesarios

Necesito comprobar si una std: string comienza con "xyz". ¿Cómo lo hago sin buscar en toda la cadena ni crear cadenas temporales con substr ()?


Siento que no entiendo completamente tu pregunta. Parece que debería ser trivial:

s[0]==''x'' && s[1]==''y'' && s[2]==''z''

Esto solo mira (como máximo) los primeros tres caracteres. La generalización de una cadena desconocida en tiempo de compilación requerirá que reemplace lo anterior por un bucle:

// look for t at the start of s for (int i=0; i<s.length(); i++) { if (s[i]!=t[i]) return false; }


Un enfoque que podría estar más de acuerdo con el espíritu de la Biblioteca estándar sería definir su propio algoritmo starts_with.

#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()); }

Esto proporciona una interfaz más simple para el código del cliente y es compatible con la mayoría de los contenedores de la Biblioteca estándar.


Yo usaría el método de comparación:

std::string s("xyzblahblah"); std::string t("xyz") if (s.compare(0, t.length(), t) == 0) { // ok }