elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.


 


Tema destacado: Página de elhacker.net en Google+ Google+


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse)
| | |-+  (Consulta) Error muy extraño con la salida a consola en C++
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: (Consulta) Error muy extraño con la salida a consola en C++  (Leído 210 veces)
class_OpenGL


Desconectado Desconectado

Mensajes: 432

Si usas Direct3D, no eres mi amigo :P


Ver Perfil
(Consulta) Error muy extraño con la salida a consola en C++
« en: 10 Octubre 2017, 18:29 »

Hola, muy buenas. Estoy desarrollando para la facultad una clase llamada Cronologia y otra como FechaHistorica, y tengo problemas con la salida del FechaHistorica. En esta clase, he definido una sobrecarga de operador amigo así:

Código
  1. std::ostream& operator<<(std::ostream &os, const FechaHistorica &fecha) {
  2.    // PRUEBAS
  3.    for(int i = 0; i < (int)fecha.acontecimientos.size(); i++)
  4.        os << fecha.acontecimientos[i] << std::endl;
  5.  
  6.    os << "________________________________" << std::endl;
  7.  
  8.    for(int i = 0; i < (int)fecha.acontecimientos.size(); i++) {
  9.        for(int j = 0; j < (int)fecha.acontecimientos[i].size(); j++)
  10.            os << '(' <<(int)fecha.acontecimientos[i][j] << ',' << fecha.acontecimientos[i][j] << ") ";
  11.  
  12.        os << std::endl << "___" << std::endl;
  13.    }
  14.  
  15.    // CÓDIGO REAL
  16.    os << fecha.año;
  17.  
  18.    for(const std::string &elemento : fecha.acontecimientos)
  19.        os << FechaHistorica::TERMINADOR << elemento;
  20.  
  21.    return os;
  22. }

La parte etiquetada como 'PRUEBAS' significa que no pertenece al código final. FechaHistorica tiene un año (int) y un conjunto de acontecimientos (std::vector de std::string). Pues bien, cuando yo ejecuto ese operador obtengo la siguiente salida:

Citar
Apriori algorithm developed by Rakesh Agrawal and Ramakrishnan Srikant
Nada en especial
Algo
________________________________
(65,A) (112,p) (114,r) (105,i) (111,o) (114,r) (105,i) (32, ) (97,a) (108,l) (103,g) (111,o) (114,r) (105,i) (116,t) (104,h) (109,m) (32, ) (100,d) (101,e) (118,v) (101,e) (108,l) (111,o) (112,p) (101,e) (100,d) (32, ) (98,b) (121,y) (32, ) (82,R) (97,a) (107,k) (101,e) (115,s) (104,h) (32, ) (65,A) (103,g) (114,r) (97,a) (119,w) (97,a) (108,l) (32, ) (97,a) (110,n) (100,d) (32, ) (82,R) (97,a) (109,m) (97,a) (107,k) (114,r) (105,i) (115,s) (104,)  (110,n) (97,a) (110,n) (32, ) (83,S) (114,r) (105,i) (107,k) (97,a) (110,n) (116,t) (13,
___
(78,N) (97,a) (100,d) (97,a) (32, ) (101,e) (110,n) (32, ) (101,e) (115,s) (112,p) (101,e) (99,c) (105,i) (97,a) (108,l)
___
(65,A) (108,l) (103,g) (111,o)
___
#Nada en especial#Algo developed by Rakesh Agrawal and Ramakrishnan Srikant

Como podeis ver, el vector de string contiene los string
  • Apriori algorithm developed by Rakesh Agrawal and Ramakrishnan Srikant
  • Nada en especial
  • Algo

Después he impreso el valor numérico de cada carácter.

El ERROR está en la siguiente parte:
Citar
#Nada en especial#Algo developed by Rakesh Agrawal and Ramakrishnan Srikant

En el código, tengo que se imprima primero el año, y luego el conjunto de sucesos, pero por alguna razón, parece ser que la posición del cursor (columna) vuelve a 0, y sobreescribe los datos de la línea ya impresos. Espero haberme explicado bien.

He probado en cada iteración a hacer un flush de 'os', pero no ha resultado.

Muchas gracias!


En línea

Programador aficionado. Me quiero centrar en programar videojuegos. La API que uso para crearlos es OpenGL
class_OpenGL


Desconectado Desconectado

Mensajes: 432

Si usas Direct3D, no eres mi amigo :P


Ver Perfil
Re: (Consulta) Error muy extraño con la salida a consola en C++
« Respuesta #1 en: 10 Octubre 2017, 19:31 »

Mira que imprimí los caracteres por si había alguno raro... No me fijé en el carriage character. Es muy raro, los datos se han leído usando la clase std::ifstream, ¿no debería saltarse estos caracteres cuando se lee sin activar la lectura binaria?

Muchas gracias


En línea

Programador aficionado. Me quiero centrar en programar videojuegos. La API que uso para crearlos es OpenGL
class_OpenGL


Desconectado Desconectado

Mensajes: 432

Si usas Direct3D, no eres mi amigo :P


Ver Perfil
Re: (Consulta) Error muy extraño con la salida a consola en C++
« Respuesta #2 en: 10 Octubre 2017, 19:36 »

Vaaaale. Ya entiendo!!!!!! std::getline no se salta los retornos de carro... Pues no tenía ni idea!!

Muchas gracias por pasaros!
En línea

Programador aficionado. Me quiero centrar en programar videojuegos. La API que uso para crearlos es OpenGL
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Salida de Consola en AutoIt 3
Scripting
D4RIO 0 1,833 Último mensaje 10 Junio 2007, 00:54
por D4RIO
solucionado - Salida de consola en modo ventana?
.NET
WHK 2 6,444 Último mensaje 30 Octubre 2010, 05:59
por WHK
Consulta salida a word desde vb
Programación Visual Basic
kronoskron 1 607 Último mensaje 21 Septiembre 2013, 03:11
por MCKSys Argentina
(consulta) No logro ralentizar la salida!
Programación C/C++
Cabezon_Encebollao 1 457 Último mensaje 17 Junio 2016, 00:49
por AlbertoBSD
Salida extraña de un codigo extraño
Programación C/C++
ferchundo9 3 375 Último mensaje 20 Octubre 2017, 19:52
por engel lex
Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines