¿Cuál es la diferencia entre cin y std:: cin?


Mejor respuesta

std es un espacio de nombres. Se agregaron espacios de nombres a C ++ STD 90. En versiones anteriores de C ++, dado que no había espacios de nombres, usaba cout y en C ++ moderno usará std :: cout.

Solo para completar, he para mencionar que si declaró en la parte superior que es using namespace std;, entonces cout significará std::cout .

Pero esa no es una forma recomendada, y debe evitarse en favor del nombre std :: cout totalmente calificado.

TL; DR; Los espacios de nombres evitan los conflictos de nombres en proyectos grandes. std es el espacio de nombres de las bibliotecas estándar de C ++.

Explicación: Exactamente como sugiere el nombre, los espacios de nombres se utilizan para limitar el alcance de los nombres únicos, lo que reduce la posibilidad de tener dos entidades con el mismo nombre. Todo idioma lo necesita y lo proporciona de una forma u otra. Java lo llama paquete, por ejemplo.

En un programa pequeño, digamos 100–500 líneas, suena exagerado tener una * característica de lenguaje * para asegurarse de que todos los nombres sean únicos o algo así. Pero el conflicto de nombres puede ocurrir de maneras más ocultas. Si escribí una biblioteca que tiene una clase llamada XYZ y tu otro amigo escribió otra biblioteca que, por cierto, tiene el mismo nombre de clase XYZ. (Las clases pueden servir para diferentes propósitos o para el mismo, pero eso no importa). No tendremos ningún problema en nuestros extremos. Ahora suponga que está desarrollando un software y utilizando AMBAS bibliotecas. Ahora, su proyecto tiene dos definiciones de clase XYZ. Eso simplemente romperá la compilación, e incluso si probablemente no use / necesite ninguna de las dos clases, solo porque están definidas con el mismo nombre, será imposible compilar ningún código con esas dos bibliotecas juntas.

Los espacios de nombres resuelven este problema. Tu amigo y yo tendremos diferentes espacios de nombres para nuestras bibliotecas. (Los espacios de nombres deben ser únicos a nivel mundial y, por lo tanto, muchas veces también incluyen la identidad del nombre de la empresa desarrolladora, de modo que otros desarrolladores que escriban una biblioteca no elijan el mismo espacio de nombres para su biblioteca)

Un clásico ejemplo es la clase List en Java. Hay 2 listas. Uno es una interfaz para la estructura de datos List. Otro es el componente List de GUI List. Puede usar ambos en un programa y, en ese caso, los referirá por nombres completos (java.util.List o java.awt.List). Los paquetes le permiten usar los mismos nombres; de lo contrario, si intentamos agregar ambos, el compilador nunca sabrá qué Lista desea y anunciará el error debido a la ambigüedad (que tiene 2 significados igualmente deducibles de una sola declaración).

std es el nombre elegido para la biblioteca estándar de C ++.

Significa que todo en las bibliotecas estándar se encontrará en std, y en el código se hará referencia como std :: cout, std :: string , std :: map y así sucesivamente.

También significa que NO debes definir nada en el espacio de nombres estándar, y debes crear un espacio de nombres separado cada vez que escribes una biblioteca, para no contaminar std namespace.

Respuesta

Si está utilizando un compilador antiguo, simplemente cin funcionará bien.

Pero con C ++ moderno, todas las cosas estándar están envueltas en el espacio de nombres std .

Los espacios de nombres ayudan a evitar conflictos de nombres entre bibliotecas o archivos de encabezado.

Entonces, si está utilizando compilación moderna er, entonces tienes que importar el espacio de nombres bre para poder usarlo, o si no quieres importar todas las construcciones sino solo algunas de ellas entonces usa std :: cin o std :: cout.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *