Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Hakim en 7 Agosto 2017, 07:52 am



Título: Nuevo en C++ copilando los primeros proyectos y dudas.
Publicado por: Hakim en 7 Agosto 2017, 07:52 am
Saludos este es mi primer post, me registre porque hay una buena fuente de información y me gustaría colaborar de la misma manera. Estoy estudiando en linea y hay algunos códigos que no veo que hagan diferencia a la hora de verlos en Deb.

por ejemplo:

Código
  1. #include "stdafx.h"    
  2. #include <iostream>  
  3. using namespace std ;      
  4.  
  5. int main ( )        
  6. {                      
  7.  
  8. cout << "C++ fue creado en los '80 " ;
  9. cout << " y fue derivado del lenguaje C " << endl;
  10. cout << "Ambos lenguajes usan funciones. " << endl << endl;
  11. cout << "Tambien usan librerias y header files. \n\n " ;
  12. system ("pause") ;
  13. return 0;
  14. }
  15.  

Los términos que tengo un poco de dudas (n\n) la cual no veo diferencia en la consola, igual porque razón en Internet se critica mucho que se use "system("pause") y getchar() es la mas recomendable.

Gracias de ante mano, perdón por todas las preguntas simultaneas.




· Los códigos deben ir en etiquetas GeSHi
>aquí las reglas del foro (http://foro.elhacker.net/reglas.htm)
-Engel Lex


Título: Re: Nuevo en C++ copilando los primeros proyectos y dudas.
Publicado por: ianmorar03 en 7 Agosto 2017, 08:06 am
El endl siempre funciona si quieres añadir al final de un ciclo for y saltar lineas de codigo simultaneas, el "\n" solo funciona dentro de la cadena de texto que quieras mostrar por pantalla. Te dejo un ejemplo
Código
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. int main(){
  5.    for(int i=0; i<4;i++){
  6.        cout<<endl;
  7.        for(int j=0;j<4;j++){
  8.            cout<<"*";
  9.        }
  10.    }
  11. }
  12.  


El system("PAUSE"); a mi me soluciono la vida cuando empece a programar en Visual Studio, siempre se salia cuando empezaba el programa, y no me dejaba hacer nada, si lo ponia me servia.  ;D
getchar(); te puede funcionar para cuando estas trabajando con archivos fuera del programa, ejemplo: un .txt externo con libreria <fstream>



Título: Re: Nuevo en C++ copilando los primeros proyectos y dudas.
Publicado por: Hakim en 7 Agosto 2017, 08:15 am
El endl siempre funciona si quieres añadir al final de un ciclo for y saltar lineas de codigo simultaneas, el "\n" solo funciona dentro de la cadena de texto que quieras mostrar por pantalla. Te dejo un ejemplo
Código
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. int main(){
  5.    for(int i=0; i<4;i++){
  6.        cout<<endl;
  7.        for(int j=0;j<4;j++){
  8.            cout<<"*";
  9.        }
  10.    }
  11. }
  12.  


El system("PAUSE"); a mi me soluciono la vida cuando empece a programar en Visual Studio, siempre se salia cuando empezaba el programa, y no me dejaba hacer nada, si lo ponia me servia.  ;D
getchar(); te puede funcionar para cuando estas trabajando con archivos fuera del programa, ejemplo: un .txt externo con libreria <fstream>



Muchas gracias, me aclaro mas dudas de lo que pensaba.


Título: Re: Nuevo en C++ copilando los primeros proyectos y dudas.
Publicado por: ivancea96 en 7 Agosto 2017, 12:47 pm
Una aclaración importante sobre endl:

En estos streams de salida, cuando escribes, no se envía instantaneamente (a la consola, en este caso). Se almacena en un buffer. Cuando el buffer se llena, o se da otra condición, el buffer se envía y se muestra en la consola lo que habíamos escrito. Esto generalmente ocurre en cuanto el programa tiene tiempo, se detiene, o cuando lo forzamos a hacerlo.

Existe otra función, que es flush:
Código
  1. cout << flush;

Esto fuerza al buffer a vaciarse. No es muy común verla, pero es importante.
endl hace 2 cosas: primero, escribe un '\n', luego, hace un flush.
endl sería similar a:
Código
  1. cout << '\n' << flush;
Lo que interesa es ver que no es igual a un salto de línea sin más: además, hace el flush.
En los programas que hagas, no deberías preocuparte: usar endl suele ser la mejor alternativa. Sin embargo, tenlo en cuenta en el futuro.


Título: Re: Nuevo en C++ copilando los primeros proyectos y dudas.
Publicado por: Hakim en 8 Agosto 2017, 10:16 am
Una aclaración importante sobre endl:

En estos streams de salida, cuando escribes, no se envía instantaneamente (a la consola, en este caso). Se almacena en un buffer. Cuando el buffer se llena, o se da otra condición, el buffer se envía y se muestra en la consola lo que habíamos escrito. Esto generalmente ocurre en cuanto el programa tiene tiempo, se detiene, o cuando lo forzamos a hacerlo.

Existe otra función, que es flush:
Código
  1. cout << flush;

Esto fuerza al buffer a vaciarse. No es muy común verla, pero es importante.
endl hace 2 cosas: primero, escribe un '\n', luego, hace un flush.
endl sería similar a:
Código
  1. cout << '\n' << flush;
Lo que interesa es ver que no es igual a un salto de línea sin más: además, hace el flush.
En los programas que hagas, no deberías preocuparte: usar endl suele ser la mejor alternativa. Sin embargo, tenlo en cuenta en el futuro.

Gracias, son notas importantes muy agradecido.