Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: tonilogar en 25 Mayo 2011, 14:39 pm



Título: [Solucionado]entrar datos con getline utilizar ignore
Publicado por: tonilogar 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.



Título: Re: entrar datos con getline utilizar ignore
Publicado por: satu 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


Título: Re: entrar datos con getline utilizar ignore
Publicado por: tonilogar 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



Título: Re: entrar datos con getline utilizar ignore
Publicado por: [L]ord [R]NA 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


Título: Re: entrar datos con getline utilizar ignore
Publicado por: tonilogar en 26 Mayo 2011, 00:12 am
Gracias [L]ord [R]NA


Título: Re: entrar datos con getline utilizar ignore
Publicado por: Littlehorse 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


Título: Re: entrar datos con getline utilizar ignore
Publicado por: tonilogar en 26 Mayo 2011, 01:20 am
Gracias por tu tiempo Littlehorse.
Me ha quedado claro, clarito, clarete.


Título: Re: entrar datos con getline utilizar ignore
Publicado por: tonilogar 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?