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.