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()?std :: string comparison (compruebe si la cadena comienza con otra cadena)
Respuesta
yo usaría método de comparación:
std::string s("xyzblahblah");
std::string t("xyz")
if (s.compare(0, t.length(), t) == 0)
{
// ok
}
Siento que no entiendo completamente su 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 que no se conoce en tiempo de compilación que requieren volver a sustituir a los anteriores, con 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;
}
Bueno, sé cómo comparar cadenas en el uso de funciones de C. Mi pregunta era acerca de hacerlo de forma orientada a objetos mediante C++ STL. – jackhab
Aquí no se usa la función C. Y la biblioteca estándar no le impide escribir sus propias funciones. –
y qué pasa si t es más corto que s? – vidstige
mirada a String Algo la biblioteca de la Boost, que tiene una serie de funciones útiles, tales como starts_with, istart_with (entre mayúsculas y minúsculas), etc. Si desea utilizar sólo una parte de las bibliotecas de impulso en su proyecto, a continuación, puede utilizar la utilidad bcp para copiar sólo los archivos necesarios
Un enfoque eso podría ser más en mantener 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 sencilla de código de cliente y es compatible con la mayoría de los contenedores Standard Library.
- 1. Compruebe si la cadena "comienza con" otra cadena en ASP clásico.
- 2. jquery compruebe si la cadena comienza con 1234
- 3. KSH compruebe si la cadena comienza con la subcadena
- 4. Compruebe si una cadena comienza con http utilizando Javascript
- 5. Compruebe si la cadena no contiene otra cadena
- 6. Comprobando si la cadena comienza con o termina con otra cadena
- 7. Verifica si la cadena comienza con algo?
- 8. si la cadena comienza con "xx" (PHP)
- 9. Verificar si una cadena comienza con XXXX
- 10. ¿Cómo comprobar si una cadena comienza con otra cadena en C?
- 11. ¿Cómo puedo saber si una cadena comienza con otra cadena en Ruby?
- 12. ¿Cómo comprobar si una cadena comienza con una cadena especificada?
- 13. Buscar si la cadena termina con otra cadena en C++
- 14. Verificar si la cadena comienza con la pestaña
- 15. verificar, si la cadena comienza con la subcadena dada
- 16. Compruebe si la cadena está vacía
- 17. C++ 11 regex: comprobando si la cadena comienza con regex
- 18. Si algún elemento de la lista comienza con una cadena?
- 19. Compruebe si la cadena contiene \ n Java
- 20. Comprobar si una cadena comienza con un número en PHP
- 21. compruebe si una cadena es una URL
- 22. Compruebe si una cadena termina con un número en PHP
- 23. ¿Cómo ver si un NSString comienza con una cierta otra cadena?
- 24. Actionscript 3: comprueba si la cadena contiene otra cadena
- 25. búsqueda si existe una cadena en otra cadena
- 26. Compruebe si una cadena contiene una cadena en C++
- 27. ¿std :: string :: assign toma "propiedad" de la cadena?
- 28. Verificar si una cadena comienza con una letra minúscula
- 29. Compruebe si una cadena contiene una subcadena
- 30. Compruebe si una cadena contiene los números
Me olvidé de comparar - este es el mejor método, pero no es necesario usar c_str (0 para obtener una cadena de caracteres –
Puede hacer una cadena s ("xyz") == "xyz" también. :) – Skurmedel
Neil, tienes toda la razón, edité la respuesta y eliminé c_str() llamada – Wacek