¿Cómo puedo contar el número de "_"
en una cadena como "bla_bla_blabla_bla"
?
c++
string
pattern-matching
andre de boer
fuente
fuente
Respuestas:
fuente
std::count
devuelve el tipoiterator_traits<InputIt>::difference_type
, que para la mayoría de los contenedores estándarstd::ptrdiff_t
no lo esstd::size_t
.Pseudocódigo:
EDITAR: código de ejemplo de C ++:
Tenga en cuenta que este es un código para usar junto con
std::string
, si lo está usandochar*
, reemplaces.size()
constrlen(s)
.También tenga en cuenta: puedo entender que quiere algo "lo más pequeño posible", pero le sugiero que utilice esta solución. Como puede ver, puede usar una función para encapsular el código por usted para que no tenga que escribir el
for
bucle cada vez, sino que puede usarlocount_underscores("my_string_")
en el resto de su código. El uso de algoritmos avanzados de C ++ es ciertamente posible aquí, pero creo que es excesivo.fuente
Solución pasada de moda con variables apropiadamente nombradas. Esto le da al código algo de espíritu.
Editar: unos 8 años después, al ver esta respuesta, me da vergüenza haberlo hecho (aunque lo justifiqué para mí mismo como un golpe sarcástico en una pregunta de bajo esfuerzo). Esto es tóxico y no está bien. No estoy quitando la publicación; Estoy agregando esta disculpa para ayudar a cambiar la atmósfera en StackOverflow. OP: Pido disculpas y espero que hayas hecho bien tu tarea a pesar de mi curricán y que las respuestas como la mía no te desanimaron a participar en el sitio.
fuente
fuente
Lo que sea ... versión Lambda ... :)
Necesitas varios incluye ... Te dejo como ejercicio ...
fuente
El uso de la función lambda para verificar que el carácter es "_", entonces solo se incrementará el conteo; de lo contrario, no será un carácter válido
fuente
[]( char c ){if(c =='_') return true; }
invoca un comportamiento indefinido porque no devolvió un valor en todas las rutas de códigoHay varios métodos de std :: string para buscar, pero encontrar es probablemente lo que está buscando. Si te refieres a una cadena de estilo C, entonces el equivalente es strchr. Sin embargo, en cualquier caso, también puede usar un bucle for y verificar cada carácter: el bucle es esencialmente lo que estos dos envuelven.
Una vez que sabe cómo encontrar el siguiente personaje dado una posición inicial, avanza continuamente su búsqueda (es decir, utiliza un bucle), contando a medida que avanza.
fuente
Contar las ocurrencias de caracteres en una cadena es fácil:
fuente
Puede encontrar la aparición de '_' en la cadena fuente utilizando las funciones de cadena. La función find () toma 2 argumentos, la primera cadena cuyas apariciones queremos averiguar y el segundo argumento toma la posición de inicio.
ejemplo:
fuente
Lo hubiera hecho de esta manera:
fuente
Hubiera hecho algo así :)
fuente
Tratar
fuente
fuente