Usando el tipo std::string
para aceptar una oración, para practicar (no he trabajado mucho con cadenas en C++) Estoy comprobando si un personaje es una vocal o no. Tengo esto:C++: ¿Por qué el espacio siempre termina una cadena cuando se lee?
for(i = 0; i <= analyse.length(); i++) {
if(analyse[i] == 'a' || analyse[i] == 'e' [..etc..]) {
...vowels++;
} else { ...
...consonants++;
}
Esto funciona bien si la cadena es una sola palabra, pero la segunda me añadir un espacio (IE: AEIO aatest) sólo contará el primer bloque y contar el espacio como una consonante, y dejar de leer la oración (salir del bucle for o algo así).
¿Un espacio cuenta como sin carácter == nulo? ¿O algo raro con std::string
? ¡Sería útil saber por qué está sucediendo eso!
EDIT: Simplemente estoy aceptando la cadena a través de std :: cin, tales como:
std::string analyse = "";
std::cin >> analyse;
No es std :: string, que puede contener cualquier carácter, incluidos espacios y nulos. Muestre cómo está leyendo en la cadena. –
¿Cómo está configurando 'analyse'? ¿Qué obtienes si 'cout << analyse.length()'? ¿La cadena "aecio" cuenta correctamente? ¿Tal vez el problema está en la porción '...' del bloque else? –
en un lado ... almacenar la longitud en una variable (const int ci = analyse.length();) funciones en el para son malas prácticas. – baash05