Saludos...
Me gustaria saber cuales los formatos de salida que utiliza el comando cout , me refiero a las cadenas de formato (con los float) y las sentencias de escape (como los tabuladores).
Espero su pronta respuesta, nos vemos...
| ||||
exacto, la diferencia entre cout y el printf, es que en el cout, no es necesario declarar los tipos que debemos imprimir, por lo que se hace menos propenso a errores, pero en mi opinion le quita funcionalidad al printf
__________________ http://blog.tolaware.com.ar -> Blog de Java, Ruby y Linux |
| ||||
Cita: mmmmm por que dices que es mas bulnerable un programa con cout?
Iniciado por vvblond bueno, solo falta mencionar que printf es una función muy segura en comparación con cout, es decir, es más vulnerable un programa que utiliza cout.
__________________ http://blog.tolaware.com.ar -> Blog de Java, Ruby y Linux |
| |||
Cita: std::cout es MUCHO mejor que printf(). Y claro, el printf no debería usarse en C++. Muchas cosas de la librería de C son inútiles pudiendo usar la de C++. Otra cosa es la eficiencia, que es más rápida la de C.
Iniciado por TolaWare exacto, la diferencia entre cout y el printf, es que en el cout, no es necesario declarar los tipos que debemos imprimir, por lo que se hace menos propenso a errores, pero en mi opinion le quita funcionalidad al printf Pero en este caso (std::cout vs. printf()) me atrevería a decir que es más rápido el std::cout, porque printf() debe analizar toda una secuencia de caracteres y tiene mil y una normas para esa cadena. En cambio, std::cout usa operadores (<<), por los cuales el compilador otorga a cada parte (<< "hola" << 5 << 6.77) su correspondiente función. Y no hace falta analizarlo al ejecutar el programa. |
| |||
Cita: ¿¿De dónde te has sacado eso??
Iniciado por vvblond bueno, solo falta mencionar que printf es una función muy segura en comparación con cout, es decir, es más vulnerable un programa que utiliza cout. |
| ||||
Cita: Comparto la misma opinion de MaxExtreme, aunque tengo un detalle con el cout y las cadenas de caracteres. Al utilizarlo para almacenar una cadena este la trunca hasta donde ve un espacio en blanco (asi como hacia el printf), para evitar esto intente usar la funcion gets pero no su uso no eficiente (al colocar mas de una cadena da conflictos), asi que me gustaria saber cómo hacer que el cout pueda leer una cadena de caracteres completa incluyendo los espacios en blanco.
Iniciado por MaxExtreme std::cout es MUCHO mejor que printf(). Y claro, el printf no debería usarse en C++. Muchas cosas de la librería de C son inútiles pudiendo usar la de C++. Agradezco su pronta respuesta... nos vemos |
| ||||
Cita: De hecho yo ni la uso. Todo el tiempo cout <<.Y claro, el printf no debería usarse en C++ Cita: bueno, solo falta mencionar que printf es una función muy segura en comparación con cout, es decir, es más vulnerable un programa que utiliza cout. |
| |||
Pues bien debido a los múltiples comentarios al respecto de cout, aquí esta mi respuesta: Aparecio esta función como parte de c++ pra facilitar la programación, si estoy totalmente de acuerdo. Pero con lo que no estoy de acuerdo es con que mando a la obsolescencia a funciones como printf, puts, etc. la función cout tiene menor tolerancia a fallos y muy lejos de esto tiene más puntos de fallo la función misma, esto debido a la forma en la que accede al archivo de salida estándar. |
| |||
la respuesta a la ultima pregunta es: cin.getline(cadena, numerode caracteres); o cin.get(cadena);// esta es untanto menos segura. pruebalas y ve cual cumple tus requerimientos. en cuanto a la discucion, primero aclarar que couty cin, no son funciones, son objetos con operadores sobrecargados " << y >> ". en cuestion de seguridad por supuesto que ninguna es mejor que la otra, la diferencia podria ser el tamaño de ejecutable que resulta el usar un metodo o el otro. pero al final de cuentas ambas usan las funciones de Win32. para escribir en la consola. La ventanja que tienen usar el estilo C++ es la comodida y facilidad de uso. es mejor usar << o >> para todo que acordarse del formato de salida o entrada, no niego en algunas ocaciones es mejor usar las funciones de C. |
| |||
A ver, printf() debe analizar en tiempo de ejecucion toda la cadena, y es lento. En cambio, a std::cout se le aplican operadores que se analizan en tiempo de compilacion y se asocia a cada sobrecarga de la clase ostream, se optimiza, y todo lo que pueda ocurrir. Por otra parte, es mas seguro en tipos, puesto que el compilador sabe que funciones estan definidas y cuales no. Aparte, std::ostream es sobrecargable, para anydair mas objetos que puedas imprimir, en cambio printf() es una mera funcion. |
| |||
tampoco extremes todo, jeje lo digo por tu nick. Si tienes razon en decir que printf recorre y analiza la cadena pero esto es una tarea nada complicada en comparacion de las diferentes llamadas a funciones que hace cout. en cuestion de memoria cout consume mucho mas que usar printf por cuestiones de la poo. al final de cuentas cada quien utilizara con la que mas le guste. ademas creo que aun no se a contestado en su totalida la pregunta inicial, ya se menciono que cout no usa indicadores de formato para los diferentes tipos de datos a imprimir pero si los usa para cosillas como signo, tipo de numeracion, ceros, ancho, etc, etc. |
| |||
xDDDD No sé, si hay posibilidades de usar la librería de C++, lo que hago yo es usarla para la mayoría de las cosas, pero claro, si tengo que copiar mover setear ... una zona de memoria, pues hago un mem---() y no se muere nadie. |