c++ parameters multidimensional-array fstream getline

c++ - conversión inválida de ''int'' a ''char*''



parameters multidimensional-array (1)

Se supone que debo escribir un programa que lea de un archivo de texto y almacene lo que está dentro del archivo de texto usando estructuras y reagrupe e imprima la información en el archivo de texto. Pero he encontrado problemas con getline . Intento escribir getline como este

getline(infile, info.name)

pero no funciona. También <cstring> <string> y <cstring> pero todavía encuentro errores como

error C2664: ''std :: basic_istream <_Elem, _Traits> & std :: basic_istream <_Elem, _Traits> :: getline (_Elem *, std :: streamsize)'': no ​​se puede convertir el parámetro 1 de ''int'' a ''char *''

y

error C2664: ''std :: basic_istream <_Elem, _Traits> & std :: basic_istream <_Elem, _Traits> :: getline (_Elem *, std :: streamsize, _Elem)'': no ​​se puede convertir el parámetro 1 de ''char [10] [80 ] ''a'' char * ''

El archivo de texto que debo imprimir es el siguiente texto

Isabella Chan
Republica de Singapur
Libra 23 - 10 - 1993
7
Deseo ser bueno en C ++
Deseo que Christina Grimmie gane la voz
Me gustaría que ......

Perdón por la pregunta de novato y gracias de antemano!

#include <iomanip> #include <iostream> #include <cstdlib> #include <ctime> #include <cctype> #include <fstream> #include <string> using namespace std; const int MAX = 80; const int MAXNO = 10; enum Zodiac { Aquarius, Pisces, Aries, Taurus, Gemini, Cancer, Leo, Virgo, Libra, Scorpio, Sagittarius, Capricorn }; struct Date { Zodiac sign; int day; int month; int year; }; struct Student { char name [MAX]; char nationality [MAX]; Date birthDate; int no; // no of other messages char wishMessage [MAXNO][MAX]; // Feel free to add in more features }; void myInfo (fstream&, char [], Student&); // The above function reads information from the text file // and store the information in a structure reference parameter void printOut(Student); int main() { fstream infile; char fName[MAX]; Student info; cout << "Enter your info file name: " cin >> fName; cout << endl; myInfo(infile, fName, info); printOut(info); } void myInfo (fstream& infile, char fName[], Student& info) { infile.open(fName, ios::in); if(!infile) { cout << "Error file not found!" << endl; exit(0); } infile.getline(info.name, MAX); infile.getline(info.nationality,MAX); infile << info.birthDate.sign << info.birthDate.day << info.birthDate.month << info.birthDate.year; infile.getline(info.no, MAX); infile.getline(info.wishMessage, MAXNO, MAX); infile.close(); cout << "Successfully readed!" << endl; } void printOut(Student info) { cout << "My name is " << info.name << endl; cout << "My nationality is " << info.nationality << endl; cout << "My date of birth is " << info.birthDate.day << " " << info.birthDate.month << " " << info.birthDate.year << endl; cout << "I am " << info.birthDate.sign << endl; cout << "/n I have " << info.no << " wishes:" << endl; }


Parece que estás tratando de leer sin cadenas con getline, mientras que está leyendo en cadenas según la documentación .

Extrae caracteres de la secuencia como entrada sin formato y los almacena en s como una secuencia de caracteres, hasta que el carácter extraído sea el carácter delimitador o n caracteres escritos en s (incluido el carácter nulo de terminación).

Aquí hay dos líneas ofensivas:

infile.getline(info.no, MAX);

y

infile.getline(info.wishMessage, MAXNO, MAX);

El primero está leyendo en int, el último está en una matriz de cadenas.

Primero deberá leer las cadenas y luego realizar las operaciones de conversión correspondientes según lo desee.