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

 

 


Tema destacado: Sigue las noticias más importantes de seguridad informática en el Twitter! de elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  [Solucionado]entrar datos con getline utilizar ignore
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [Solucionado]entrar datos con getline utilizar ignore  (Leído 6,091 veces)
tonilogar

Desconectado Desconectado

Mensajes: 55


Ver Perfil
[Solucionado]entrar datos con getline utilizar ignore
« en: 25 Mayo 2011, 14:39 pm »

Un saludo de nuevo a todos los integrantes del foro, después de un tiempo empollando c++.


Pues con este código lo único que quiero es recoger un string incluyendo los espacios y para eso utilizo getline.

El problema es que cuando escribo el dato tengo que pulsar dos returns en lugar de una vez,  como funciona cin.
Si no me equivoco, el problema es que el getline después de los datos de entrada , siempre pone al final /n.
Y /n se tiene que borrar con ignore.

Pero no consigo hacerlo.
¿Estoy en lo cierto en lo referente a ‘/n? o ¿porque razón hay que teclear dos veces a return.?
¿O es mejor utilizar otra forma para recoger variables string con espacios?
Código
  1. #include <iostream>
  2. #include <string>
  3. using namespace std;
  4. int main()
  5. {
  6.  
  7. string fichero;
  8.  
  9.  
  10. cout << "entra datos";
  11. cout << endl<< endl;
  12. getline (cin,fichero);
  13.  
  14. cout << endl<< endl;
  15.  
  16.  
  17.  
  18. cout << fichero << "   numero de caracteres";
  19. cout << endl<< endl;
  20. cout << fichero.length();
  21. cout << endl<< endl;
  22. cout << fichero.capacity();
  23. cout << endl<< endl;
  24. cout << fichero.size();
  25. cout << endl<< endl;
  26.  
  27. return 0;
  28. }
  29.  
Un saludo y gracias por vuestro tiempo.



« Última modificación: 9 Junio 2011, 00:43 am por tonilogar » En línea

No porque discrepe de tu opinión intento ofenderte.

Un saludo a todos y gracias por vuestro tiempo.
satu


Desconectado Desconectado

Mensajes: 301

Siempre aprendiendo


Ver Perfil WWW
Re: entrar datos con getline utilizar ignore
« Respuesta #1 en: 25 Mayo 2011, 20:33 pm »

Hola

Lo estoy probando y funciona normal, no tengo que pulsar 2 veces enter, lo que sí te voy a corregir es el #include <string>, que en C++ es #include <cstring> y el carácter que pone no es /n sino \n

Por lo demás todo normal

Saludos


En línea

Breakbeat como forma de vida
tonilogar

Desconectado Desconectado

Mensajes: 55


Ver Perfil
Re: entrar datos con getline utilizar ignore
« Respuesta #2 en: 25 Mayo 2011, 23:35 pm »

Gracias por tu ayuda satu.

Pero no entiendo como a mi no me funciona correctamente.
Yo estoy utilizando el Microsoft Visual c++.
Lo probare con algún editor en ubuntu.
Corrígeme si me equivoco ¿las librerías con c delante no son las de c?¿o son las de c++?

string para c++.
cstring para c.

Gracias por tu tiempo

En línea

No porque discrepe de tu opinión intento ofenderte.

Un saludo a todos y gracias por vuestro tiempo.
[L]ord [R]NA


Desconectado Desconectado

Mensajes: 1.513

El Dictador y Verdugo de H-Sec


Ver Perfil WWW
Re: entrar datos con getline utilizar ignore
« Respuesta #3 en: 25 Mayo 2011, 23:58 pm »

no... lo que sucede es que las librerias de C fueron agregadas a C++ con una C antecediendo al nombre, por lo tanto

#include <cstring> es para C++ y #include <string> para C
En línea

tonilogar

Desconectado Desconectado

Mensajes: 55


Ver Perfil
Re: entrar datos con getline utilizar ignore
« Respuesta #4 en: 26 Mayo 2011, 00:12 am »

Gracias [L]ord [R]NA
En línea

No porque discrepe de tu opinión intento ofenderte.

Un saludo a todos y gracias por vuestro tiempo.
Littlehorse
All the world's a stage
Moderador
***
Desconectado Desconectado

Mensajes: 2.714


Nie Dam Sie


Ver Perfil WWW
Re: entrar datos con getline utilizar ignore
« Respuesta #5 en: 26 Mayo 2011, 01:04 am »

no... lo que sucede es que las librerias de C fueron agregadas a C++ con una C antecediendo al nombre, por lo tanto

#include <cstring> es para C++ y #include <string> para C

No.

En C es string.h.

En C++, el archivo de cabecera cstring equivaldría a string.h (digo equivaldría porque no son iguales)

En C++, el archivo de cabecera string contiene la clase string, por lo tanto

Código
  1. #include <string.h> // Lenguaje C: strcpy, strcmp, etc

Código
  1. #include <cstring> /* Lenguaje C++: strcpy, strcmp, etc */

Código
  1. #include <string> /* Lenguaje C++: clase string, c_str, compare, append, etc */

Saludos
En línea

An expert is a man who has made all the mistakes which can be made, in a very narrow field.
tonilogar

Desconectado Desconectado

Mensajes: 55


Ver Perfil
Re: entrar datos con getline utilizar ignore
« Respuesta #6 en: 26 Mayo 2011, 01:20 am »

Gracias por tu tiempo Littlehorse.
Me ha quedado claro, clarito, clarete.
En línea

No porque discrepe de tu opinión intento ofenderte.

Un saludo a todos y gracias por vuestro tiempo.
tonilogar

Desconectado Desconectado

Mensajes: 55


Ver Perfil
Re: entrar datos con getline utilizar ignore
« Respuesta #7 en: 26 Mayo 2011, 11:02 am »

Pues en principio ya está solucionado.
Como decía satu funciona correctamente.
El problema parece ser el compilador que utiliza Microsoft visual c++ 6 (que según me han dicho es) MSVC++
Lo he compilado con Microsoft visual studio y funciona correctamente.

Podéis recomendarme un editor gratuito que trabaje en win y linux.
¿Eclipse es una buena opción?
En línea

No porque discrepe de tu opinión intento ofenderte.

Un saludo a todos y gracias por vuestro tiempo.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
PROBLEMA con la funcion miembro getline() e ignore()
Programación C/C++
.:BlackCoder:. 9 7,843 Último mensaje 27 Julio 2010, 04:29 am
por leogtz
cin.getline y cin.ignore
Programación C/C++
ricardo2013 6 4,887 Último mensaje 25 Octubre 2012, 17:01 pm
por rir3760
[SOLUCIONADO] me salta el getline « 1 2 »
Programación C/C++
elkiy 19 15,839 Último mensaje 22 Febrero 2013, 23:31 pm
por leosansan
Problema con el delimitador de getline [SOLUCIONADO]
Programación C/C++
anonimo12121 3 5,455 Último mensaje 1 Abril 2013, 18:13 pm
por anonimo12121
Como usar cin.ignore()
Programación C/C++
Lotux5 2 12,456 Último mensaje 12 Mayo 2013, 18:46 pm
por rir3760
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines