Comportamiento del flujo de entrada de C con "cin"
Al leer la entrada utilizando el flujo "cin" en C, es importante comprender cómo interactúa con varios tipos de datos. De forma predeterminada, "cin" lee una palabra a la vez, lo que puede provocar un comportamiento inesperado al tratar con matrices o cadenas de caracteres.
En el ejemplo de código proporcionado, el método "input()" en el archivo "String "la clase usa "cin >> str;" para leer la cadena de entrada. Sin embargo, esta declaración solo captura una sola palabra, ignorando las palabras posteriores en la entrada. Como resultado, cuando la entrada contiene varias palabras, como "steve hawking", solo la primera palabra, "steve", se almacena en la matriz "str".
Solución: usar getline( ) para leer líneas completas
Para leer una línea completa de entrada en una matriz de caracteres, se puede utilizar la función "getline()" en lugar de "cin >>". Aquí está el método de entrada actualizado usando "getline()":
void input()
{
cout "getline()" toma dos argumentos: un puntero a la matriz de destino y el tamaño de la matriz. Lee la entrada hasta que encuentra un carácter de nueva línea, capturando efectivamente toda la línea de entrada.
Consideraciones adicionales
Vale la pena señalar que el uso de matrices de caracteres para la manipulación de cadenas puede ser engorroso y propenso a errores. La biblioteca estándar de C proporciona la clase "std::string", que ofrece un enfoque más sólido y con seguridad de tipos para el manejo de cadenas. En lugar de utilizar matrices de caracteres, el código podría reescribirse como:
#include
#include
class String
{
public:
std::string str;
void input()
{
cout Finalmente, el uso de archivos de encabezado como "iostream.h" y "conio.h" está desactualizado. El desarrollo moderno en C debería utilizar archivos de encabezado como "iostream" y "conio", respectivamente.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3