Test Foro de elhacker.net SMF 2.1

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 (cpp) [Seleccionar]
#include <iostream>
#include <fstream>
using namespace std;

class Fichero{
    ofstream Datos;
public:
    void Ingresar();
};

void Fichero::Ingresar(){
    this->Datos.open("Rojo.txt");
    cout<<"Dame algunas frases."<<endl;
    string f;
    cin.getline(f,100);
    Fichero >> f;
}

int main(){
    Fichero Edgar;
    Edgar.Ingresar();
    return 0;
}



y los errores que me manda son estos.

Código (cpp) [Seleccionar]
||=== Build file: "no target" in "no project" (compiler: unknown) ===|
C:\Users\Edgar\Desktop\ArchivosC++\Ejercicio6.1.cpp||In member function 'void Fichero::Ingresar()':|
C:\Users\Edgar\Desktop\ArchivosC++\Ejercicio6.1.cpp|15|error: no matching function for call to 'std::basic_istream<char>::getline(std::string&, int)'|
C:\Users\Edgar\Desktop\ArchivosC++\Ejercicio6.1.cpp|15|note: candidates are:|
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]|
C:\Program Files (x86)\CodeBlocks\MinGW\lib\gcc\mingw32\4.9.2\include\c++\istream|618|note:   candidate expects 3 arguments, 2 provided|
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]|
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*}'|
C:\Users\Edgar\Desktop\ArchivosC++\Ejercicio6.1.cpp|16|error: expected unqualified-id before '>>' token|
||=== Build failed: 2 error(s), 0 warning(s) (0 minute(s), 0 second(s)) ===|



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 (cpp) [Seleccionar]
istream& getline (char* s, streamsize n );
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 (cpp) [Seleccionar]
istream& getline (istream& is, string& str);
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