Para desarrolladores
Contador de caracteres C++: cuenta los caracteres de una cadena
Ejemplos de código en C++ listos para contar caracteres: todos los caracteres, los caracteres sin espacios y el recuento de palabras. Además, notas importantes sobre UTF-8. También puedes probar el recuento directamente en el navegador.
Límite de caracteres u objetivo
Contado con espacios. Cambia la base del recuento con el interruptor de abajo.
Límites de caracteres por canal (caracteres con espacios)
Mostrar análisis del texto
Palabras más frecuentes
- Escribe algo de texto para ver las palabras más frecuentes.
1. Todos los caracteres de una cadena
La forma básica de contar caracteres en C++ es el método size() o length() de la clase std::string. Devuelven la longitud de la cadena en bytes. En texto ASCII puro, el número de bytes coincide con el número de caracteres.
// Todos los caracteres (en bytes)
#include <iostream>
#include <string>
int main() {
std::string texto;
std::getline(std::cin, texto);
std::cout << "Caracteres: " << texto.size() << "\n";
return 0;
}
2. Caracteres sin espacios
Cuando quieras contar solo los caracteres reales, recorre la cadena y omite los espacios en blanco con la función std::isspace. Así obtienes el equivalente de la cifra sin espacios del contador de la página.
// Caracteres sin espacios
#include <iostream>
#include <string>
#include <cctype>
int main() {
std::string t; std::getline(std::cin, t);
int n = 0;
for (unsigned char c : t)
if (!std::isspace(c)) n++;
std::cout << "Sin espacios: " << n << "\n";
return 0;
}
3. Recuento de palabras
Las palabras se cuentan cómodamente con un flujo std::istringstream, que divide el texto en palabras por los espacios.
// Recuento de palabras
#include <iostream>
#include <sstream>
#include <string>
int main() {
std::string linea; std::getline(std::cin, linea);
std::istringstream iss(linea);
std::string palabra; int palabras = 0;
while (iss >> palabra) palabras++;
std::cout << "Palabras: " << palabras << "\n";
return 0;
}
UTF-8: los bytes no son lo mismo que los caracteres visibles
Esta es la mayor trampa con el texto que no es ASCII. std::string::size() devuelve el número de bytes, no el número de caracteres visibles. En la codificación UTF-8, letras como á, é, í y ñ ocupan dos bytes y muchos emojis incluso cuatro. Por eso la palabra "café" puede parecer que tiene cinco bytes aunque sus caracteres visibles sean cuatro.
Recuerda: si quieres contar los caracteres visibles de un texto UTF-8, tienes que interpretar la codificación; por ejemplo, contar solo los bytes que no empiezan por el patrón de bits 10xxxxxx. El contador del navegador de arriba usa un recuento basado en grafemas, así que puedes comparar su resultado con tu código.
Recuentos recientes
Los recuentos se guardan solo en tu propio navegador para que puedas volver a ellos más tarde. Nunca se envían a ningún servidor.
Preguntas frecuentes
Preguntas frecuentes
¿Cómo cuento los caracteres de una cadena en C++?
La forma más sencilla es usar el método size() o length() de la clase std::string. Devuelven la longitud de la cadena en bytes. En texto ASCII esto coincide con el número de caracteres, pero en texto UTF-8 las letras acentuadas y los emojis pueden ocupar varios bytes.
¿Cómo cuento los caracteres sin espacios?
Recorre la cadena y omite los espacios, por ejemplo comprobando isspace(). También puedes eliminar solo los espacios normales o todos los espacios en blanco, según lo que necesites.
¿Por qué los caracteres acentuados se cuentan mal?
std::string mide la longitud en bytes. En UTF-8 un carácter acentuado ocupa dos bytes, así que el número de caracteres visibles y el número de bytes difieren. Para contar los caracteres visibles hace falta un tratamiento que tenga en cuenta la codificación.
¿Puedo probar el recuento sin un compilador?
Sí. Pega la cadena en el contador de arriba y verás los caracteres con y sin espacios al instante en el navegador. Así puedes comparar el resultado con la salida de tu código C++.
Otros contadores y guías
Continúa con estas herramientas
Herramientas y guías enlazadas internamente que complementan esta página.