SoloCodigo

Programación General => C/C++ => Mensaje iniciado por: JrcsDev en Domingo 8 de Junio de 2008, 00:37

Título: Limpiar Pantalla En C++
Publicado por: JrcsDev en Domingo 8 de Junio de 2008, 00:37
bueno, esa es mi duda... cómo puedo limpiar la pantalla de forma estándar en C++??? algo similar a lo que hace el clrscr() de conio.h.... GRACIAS AMIGOS!
Título: Re: Limpiar Pantalla En C++
Publicado por: Iganguli en Domingo 8 de Junio de 2008, 02:07
puedes usar
Citar
system("cls");
que esta en la  stdlib.h
Título: Re: Limpiar Pantalla En C++
Publicado por: JrcsDev en Domingo 8 de Junio de 2008, 02:30
ok, voy a probar... gracias xD
Título: Re: Limpiar Pantalla En C++
Publicado por: JrcsDev en Viernes 13 de Junio de 2008, 01:25
pues intente con el system("cls"), y nada... no me funciona... yo lo estoy haciendo desde el ide de borland (ese de azul) pero usando solo LO STANDAR... aun asi... no encuentro como limpiar pantalla... porque ya aprendi a odiar la conio.h, sobre todo gotoxy y clrscr...
Título: Re: Limpiar Pantalla En C++
Publicado por: Riskz en Viernes 13 de Junio de 2008, 03:37
Pues me parece raro que no te ande. Incluiste la libreria stdlib?:
Código: Text
  1.  
  2. #include <stdlib.h>
  3.  
  4.  

Es que cabe aclarar que estandar no quiere decir que lo puedes hacer sin incluir nada, es decir, aunque la libreria sea estandar tienes que incluirla igual.
Título: Re: Limpiar Pantalla En C++
Publicado por: JrcsDev en Viernes 13 de Junio de 2008, 04:25
Obvio, ya tengo tiempo averiguando sobre C++ estándar... inclui esa libreria y tambien stdio.h, mmm y la iostream.h
Título: Re: Limpiar Pantalla En C++
Publicado por: Iganguli en Viernes 13 de Junio de 2008, 05:48
si estas usando c++ entonces la libreria es la  

Código: Text
  1. #include <cstdlib>
  2.  

y si usas c entonces es la

Código: Text
  1. #include <stdlib.h>
  2.  
Título: Re: Limpiar Pantalla En C++
Publicado por: JrcsDev en Sábado 14 de Junio de 2008, 09:37
estoy programando en C++ pero usando el IDE de borland... ese azul en formato MSDOS... pero esa libreria que dices (cstdlib) no existe... bueno, no me la reconoce  :scream:  en verdad no tengo idea de como lograr eso de borrar la pantalla...
Título: Re: Limpiar Pantalla En C++
Publicado por: franz. en Sábado 14 de Junio de 2008, 19:58
bajo que sistema operativo estas trabajando?
si es bajo unix pues solo con un system("clear");
si usas DOS:
system("cls");
saludos
Título: Re: Limpiar Pantalla En C++
Publicado por: JrcsDev en Sábado 14 de Junio de 2008, 20:16
bueno, yo tengo instalado windows xp sp3... pero estoy trabajando con el IDE de BORLAND, bajo MSDOS... (bueno, el CMD)... y bueno... necesito borrar la pantalla para q no se vea un enredo de datos en la pantalla... sera posible que no exista una forma estándar?
Título: Re: Limpiar Pantalla En C++
Publicado por: Iganguli en Sábado 14 de Junio de 2008, 23:33
bueno una forma estandar creo que no existe (creo ;) ) y tomalo como un consejo no uses el borlnad ya que es un compilador de 16 bits aparte de viejisimo no esta actualizado al c++ puedes probar con otros compiladores como el vc++ en su version express si no quieres pagar licencia :D  o usar los de gnu como el minigw o el codeblocks o es el dev cpp y dejar atras el borland
Título: Re: Limpiar Pantalla En C++
Publicado por: Geo en Domingo 15 de Junio de 2008, 19:39
Cita de: "[x3mjr"
,Junio 14, 2008 01:37 am]estoy programando en C++ pero usando el IDE de borland... ese azul en formato MSDOS... pero esa libreria que dices (cstdlib) no existe... bueno, no me la reconoce  :scream:  en verdad no tengo idea de como lograr eso de borrar la pantalla...
Ese compilador es viejo, no incluye la función que estás intentando utilizar. Lo que si veo, ya que usas ese compilador, pues utiliza las funciones que tienes a tu disposición de la biblioteca conio, o cámbiate a algo más reciente, las versiones Express .NET de los compiladores de Microsoft son gratuitas :).

Una alternativa para que luego compiles tu código en otras plataformas podría ser algo como esto:
Código: Text
  1.  
  2. #ifdef BORLAND_DOS
  3.   #define limpia_pantalla clrscr();
  4.  
  5. #ifdef WINDOWS
  6.     #define limpia_pantalla system( "cls" );
  7.  
  8. #ifdef LINUX
  9.   #define limpia_pantalla system( "clear" );
  10.  
  11.  
Así, en cada lugar donde desees limpiar la pantalla llamas a la función limpia_pantalla, la cual se define de acuerdo al sistema que estés utilizando, a lo que esto te ayuda es a que no se necesite editar el código para compilar en otra plataforma, recuerda enlazar con la biblioteca adecuada ;).
Nota: ese código es incorrecto, faltan las sentencias #endif para cerrar los #ifdef y quizá podría hacerse de otra forma, pero la idea se entiende :P.
Título: Re: Limpiar Pantalla En C++
Publicado por: Forly en Domingo 22 de Junio de 2008, 00:01
Hola:
Espero que no sea demasiado tarde.

Te cuento que no existe una forma estandar de borrar la pantalla en C ni en C++.

Como te han contestado ya otros foreros, la funcion system() de la libreria stdlib.h, si es estandar, y utiliza el comando del sistema operativo para borrar la pantalla. Es no es nada portable, ya que cada sistema operativo tiene su forma particular d limpiar la pantalla.

Por otro lado, te cuento que el IDE Turbo C de Borland, no es nada estandar, y ademas solo se puede utlizar bajo sistema operativo DOS o en maquinas virtuales que lo emulen.

Como bien sabras, el DOS esta diseñado, para una plataforma Intel I8086, por lo que lo hace menos portable aun.

Sin saber por que tienes que trabajar en este entorno obsoleto, te envio una solucion que encontre para este entorno tan exclusivo y alejado de los estandares:

Espero que te sirva.

//////////////////////////////////////////////////////////////////////////
// NOMBRE: clrscr()
// AUTOR : Forly.
// CREADA  : 21/06/2008
//
// ACCION: Borra la pantalla en modo texto. Es una funcion alternativa a
//         la funcion "clrscr()" de la libreria "conio.h" de Borland.
//
//         Utiliza codigo ensamblador de la familia de procesadores
//         I8086, por lo que se transforma en una funcion NO PORTABLE.
//
//         Funciona bien en entornos DOS y en maquinas virtuales DOS
//         que se ejecutan bajo las arquitecturas I8086.
//
// PARAMETROS: Ninguno.
// RETORNOS    : Ninguno.
//-----------------------------------------------------------------------
#include <stdio.h>
#include <iostream.h>

void clrscr(void)
{
      asm   {
               push ax
               mov ah,0fh
               int 10h
               mov ah,00h
               int 10h
               pop ax
            }
}

//------------------------------------------------------------------------
// PORCION DE  main() PARA PROBAR EN TURBO C++ V.3.0 DE BORLAND.
//------------------------------------------------------------------------
int main()
{
    cout << "Esto lo escribo para que veas algo en pantalla" << endl;
    cout << "(presiona una tecla para continuar...)" << endl;
    getchar(); // Hago una pausa.

    clrscr(); // Limpia la pantalla con la funcion desarrollada.

    cout << "Si ves solo esto es que la funcion trabaja bien." << endl;
    cout << "(presiona otra tecla para terminar...)" << endl;
    getchar();
    clrscr();
    return 0;
}

////////////////////////// FIN DE ARCHIVO //////////////////////////////////

Saludos
Título: Re: Limpiar Pantalla En C++
Publicado por: JrcsDev en Domingo 22 de Junio de 2008, 01:30
Gracias! lástima que igual no sea estándar... pero ya decia yo que con las interrupciones se podia hacer algo... jeje... bueno, ya empecé con DEV-C++, y algo de ALLEGRO... Gracias, voy a probar y te aviso... :)  B)
Título: Re: Limpiar Pantalla En C++
Publicado por: su - en Domingo 22 de Junio de 2008, 02:26
Para UNIX lo estandar seria usar ANSI escapes (en Windows tambien se puede, usando ANSI.SYS... yo miraria Windows.h) :
Código: Text
  1. printf( &#34;&#092;e[2J&#34; );
  2.  
Título: Re: Limpiar Pantalla En C++
Publicado por: Forly en Domingo 22 de Junio de 2008, 03:30
Nuevamente en tema:

Si recien comienzas con Dev C++, te recomiendo que cambies por Code::Blocks, ya que Dev C++ es un proyecto discontinuado, mientras que el Code:: Blocks, se parece bastante, es un proyecto joven, que utiliza el mismo compilador, es multi plataforma y tiene futuro.

En cuanto a comenzar con Allegro, nuevamente me permito sugerirte que lo cambies por las librerias SDL.

Son solo consejos.

Suerte