Très bien, soyez gentil, puisque je suis très novice en programmation. Jusqu'à présent, j'ai seulement étudié le C++ et j'ai exécuté Visual Studio 2010 en tant que compilateur. Pour ce programme, j'essaie de lire à partir d'un fichier d'entrée de texte et d'écrire l'information dans un ensemble de trois tableaux. Un tableau gère une liste de noms, et les deux autres sont pour les heures travaillées et le taux de rémunération horaire, respectivement. J'utiliserai ces deux derniers pour calculer un ensemble de revenus et afficher le tout dans un autre fichier texte sous forme de rapport. Mon problème, cependant, est d'acquérir des entrées pour le premier tableau. Le fichier d'entrée que je utilise a arrangé le texte comme celui-ci:Lecture de l'entrée d'un fichier texte dans un tableau en C++
Doe J. * 35 12,50 J. Aube * 20 10.00 .........
Les noms sont traînés par des astérisques puisque j'essaie d'utiliser ifstream getline pour acquérir les noms avec les astérisques agissant comme des délimiteurs, et écrire les deux nombres suivants dans les deux autres tableaux. Les deux dernières valeurs sont séparées par des espaces, donc je ne pense pas qu'elles causeront des problèmes. Je suis sûr qu'il y a d'autres erreurs qui doivent être traitées, mais je dois passer par la première erreur avant de commencer à déboguer le reste.
Mon problème se produit avec la ligne où j'appelle inFile.getline, puisque je reçois l'erreur suivante: Erreur C2664: « std :: basic_istream < _Elem, _Traits> & std :: basic_istream < _Elem, _Traits> :: getline (_Elem *, std :: streamsize, _Elem) ': impossible de convertir le paramètre 1 de' std :: string 'en' char * '. D'après ce que j'ai lu ailleurs, (je pense) le problème vient d'essayer d'écrire une chaîne dans un tableau char, ce qui ne fonctionnera pas car ils ont des types de données différents. Je ne suis pas sûr si d'autres méthodes réalisables existent pour acquérir les noms puisque j'ai besoin du séparateur pour séparer les noms des valeurs numériques. Tout conseil sur la façon de résoudre ce problème serait très apprécié.
Voici la source que j'ai écrit:
#include <iostream>
#include <fstream>
#include <iomanip>
#include <string>
using namespace std;
const int EMP_NUM = 5;
const int BASE_HOURS = 40;
const char N_SIZE = 8;
int main()
{
int i;
double rEarnings, oEarnings, tEarnings,
trEarnings, toEarnings, ttEarnings;
ifstream inFile;
ofstream outFile;
inFile.open("records.txt");
outFile.open("report.txt");
outFile << setprecision(2) << showpoint << fixed;
outFile << setw(50) << "Payroll Report" << "\n\n";
outFile << "EMPLOYEE NAME" << setw(25) << "REGULAR EARNINGS" << setw(25) << "OVERTIME EARNINGS" << setw(25) << "TOTAL EARNINGS" << endl;
string nameAr[EMP_NUM];
int hoursAr[EMP_NUM];
double hrateAr[EMP_NUM];
for (int i = 0; i < EMP_NUM; i++) // Get input from our input file.
{
inFile.getline(nameAr[i], EMP_NUM, "*");
inFile >> hoursAr[i] >> hrateAr[i];
}
for (int i = 0; i < EMP_NUM; i++) // Make the calculations to be sent to our report.
{
char nameAr[N_SIZE];
int hoursAr[N_SIZE];
double hrateAr[N_SIZE];
if (hoursAr[i] > 40) // For employees with overtime hours.
{
// double rEarnings, double oEarnings, double tEarnings,
// double trEarnings, double toEarnings, double ttEarnings;
// rEarnings = 0, oEarnings = 0, tEarnings = 0,
// trEarnings = 0, toEarnings = 0, ttEarnings = 0;
rEarnings = BASE_HOURS * hrateAr[i];
oEarnings = (hoursAr[i] - BASE_HOURS) * hrateAr[i] * 1.5;
tEarnings = rEarnings + oEarnings;
trEarnings += rEarnings;
toEarnings += oEarnings;
ttEarnings += tEarnings;
outFile << left << nameAr[i];
// << setw(25) << right << rEarnings << setw(25) << right << oEarnings << setw(25) << right << tEarnings << endl;
}
else // For employees without overtime hours.
{
// double rEarnings, double oEarnings, double tEarnings,
// double trEarnings, double toEarnings, double ttEarnings;
// rEarnings = 0, oEarnings = 0, tEarnings = 0,
// trEarnings = 0, toEarnings = 0, ttEarnings = 0;
rEarnings = hoursAr[i] * hrateAr[i];
oEarnings = 0;
tEarnings = rEarnings + oEarnings;
trEarnings += rEarnings;
toEarnings += oEarnings;
ttEarnings += tEarnings;
outFile << left << nameAr[i];
// << setw(25) << right << rEarnings << setw(25) << right << oEarnings << setw(25) << right << tEarnings << endl;
}
}
outFile << endl << endl;
outFile << setw(33) << trEarnings << " *" << setw(23) << toEarnings << " *" << setw(23) << ttEarnings << " *\n\n";
outFile << left << "TOTAL EMPLOYEES" << " " << (i - 1);
inFile.close(); outFile.close();
return 0;
}
J'ai inclus l'ensemble du programme pour vous donner une idée de l'endroit où je prévois d'aller avec le codage. Merci d'avance pour l'aide!
Vous devez supprimer le forum '' tags [code] et indenter votre code avec 4 les espaces. (ou sélectionnez-le et appuyez sur le bouton de code (celui avec 1010 dedans) Cela rend votre code beaucoup plus facile à lire – rubenvb