Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: EdgarKrieger en 26 Febrero 2016, 01:24 am



Título: ayuda con getline
Publicado por: EdgarKrieger en 26 Febrero 2016, 01:24 am
Hola pues mi duda es porque me manda error cuando utilizo cin.getline(), apenas estoy aprendiendo a crear archivos y me estreso mucho cuando algo no sale jejejejejejejeje, ayuda por favor mi código es este:

Código
  1. #include <iostream>
  2. #include <fstream>
  3. using namespace std;
  4.  
  5. class Fichero{
  6.    ofstream Datos;
  7. public:
  8.    void Ingresar();
  9. };
  10.  
  11. void Fichero::Ingresar(){
  12.    this->Datos.open("Rojo.txt");
  13.    cout<<"Dame algunas frases."<<endl;
  14.    string f;
  15.    cin.getline(f,100);
  16.    Fichero >> f;
  17. }
  18.  
  19. int main(){
  20.    Fichero Edgar;
  21.    Edgar.Ingresar();
  22.    return 0;
  23. }
  24.  


y los errores que me manda son estos.

Código
  1. ||=== Build file: "no target" in "no project" (compiler: unknown) ===|
  2. C:\Users\Edgar\Desktop\ArchivosC++\Ejercicio6.1.cpp||In member function 'void Fichero::Ingresar()':|
  3. C:\Users\Edgar\Desktop\ArchivosC++\Ejercicio6.1.cpp|15|error: no matching function for call to 'std::basic_istream<char>::getline(std::string&, int)'|
  4. C:\Users\Edgar\Desktop\ArchivosC++\Ejercicio6.1.cpp|15|note: candidates are:|
  5. C:\Program Files (x86)\CodeBlocks\MinGW\lib\gcc\mingw32\4.9.2\include\c++\istream|618|note: std::basic_istream<_CharT, _Traits>& std::basic_istream<_CharT, _Traits>::getline(std::basic_istream<_CharT, _Traits>::char_type*, std::streamsize, std::basic_istream<_CharT, _Traits>::char_type) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_istream<_CharT, _Traits>::char_type = char; std::streamsize = int]|
  6. C:\Program Files (x86)\CodeBlocks\MinGW\lib\gcc\mingw32\4.9.2\include\c++\istream|618|note:   candidate expects 3 arguments, 2 provided|
  7. C:\Program Files (x86)\CodeBlocks\MinGW\lib\gcc\mingw32\4.9.2\include\c++\istream|427|note: std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::getline(std::basic_istream<_CharT, _Traits>::char_type*, std::streamsize) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_istream<_CharT, _Traits>::__istream_type = std::basic_istream<char>; std::basic_istream<_CharT, _Traits>::char_type = char; std::streamsize = int]|
  8. C:\Program Files (x86)\CodeBlocks\MinGW\lib\gcc\mingw32\4.9.2\include\c++\istream|427|note:   no known conversion for argument 1 from 'std::string {aka std::basic_string<char>}' to 'std::basic_istream<char>::char_type* {aka char*}'|
  9. C:\Users\Edgar\Desktop\ArchivosC++\Ejercicio6.1.cpp|16|error: expected unqualified-id before '>>' token|
  10. ||=== Build failed: 2 error(s), 0 warning(s) (0 minute(s), 0 second(s)) ===|
  11.  


ayuda por favor, ya me duele la cabeza jajajajaaajjaa


Título: Re: ayuda con getline
Publicado por: class_OpenGL en 26 Febrero 2016, 02:39 am
El método std::istream::getline está definido así:
Código
  1. istream& getline (char* s, streamsize n );
  2. istream& getline (char* s, streamsize n, char delim );

Es decir, el primer parámetro es de tipo cadena estilo C (es decir, tipo char*) y lo que tu le estás pasando es una cadena estilo C++, es decir, de tipo string. Para solucionar esto, tienes dos opciones: o bien declarar la cadena 'f' como char f[100], o bien usas la función std::getline, la cual está definida así:

Código
  1. istream& getline (istream& is, string& str);
  2. istream& getline (istream& is, string& str, char delim);


Título: Re: ayuda con getline
Publicado por: EdgarKrieger en 26 Febrero 2016, 17:06 pm
Muchas gracias, me sirvió de manera excelente, tenia otro error en la linea que seguía, ya lo pude arreglar, muchas gracias de nuevo.    ;-) ;-) ;-)


Título: Re: ayuda con getline
Publicado por: class_OpenGL en 26 Febrero 2016, 23:50 pm
Me alegro haber servido de ayuda! Marca el tema como resuelto para mejor organización ;D