Ceci est mon fichier d'en-têteCout sortie ligne de charabia de message au lieu de la déclaration de Cout de l'utilisateur réel
#ifndef KINGDOM_H_
#define KINGDOM_H_
#include <string>
using namespace std;
namespace sict{
class Kingdom {
public:
char m_name[32];
int m_population;
};
void display(Kingdom& pKingdom);
}
#endif
et ce sont mes fichiers cpp
#include <iostream>
#include <string>
#include "kingdom.h"
using namespace std;
namespace sict {
void display(Kingdom& pKingdom) {
cout << pKingdom.m_name << ", population " << pKingdom.m_population << endl;
}
}
Et voici mon dernier fichier cpp
#include <iostream>
#include "Kingdom.h"
using namespace std;
using namespace sict;
void read(sict::Kingdom&);
int main() {
int count = 0; // the number of kingdoms in the array
Kingdom* pKingdom = nullptr;
cout << "==========\n"
<< "Input data\n"
<< "==========\n"
<< "Enter the number of Kingdoms: ";
cin >> count;
cin.ignore();
if (count < 1) return 1;
pKingdom = new Kingdom[count];
for (int i = 0; i < count; ++i) {
cout << "Kingdom #" << i + 1 << ": " << endl;
cin >> i;
cout << "Enter the name of the Kingdom: " << pKingdom[i].m_name;
cin >> pKingdom[i].m_name;
cout << "Enter the number people living in " << pKingdom[i].m_population << ": ";
cin >> pKingdom[i].m_population;
}
cout << "==========" << endl << endl;
// testing that "display(...)" works
cout << "------------------------------" << endl
<< "The 1st kingdom entered is" << endl
<< "------------------------------" << endl;
sict::display(pKingdom[0]);
cout << "------------------------------" << endl << endl;
delete[]pKingdom;
pKingdom = nullptr;
return 0;
}
// read accepts data for a Kingdom from standard input
void read(sict::Kingdom& kingdom) {
cout << "Enter the name of the Kingdom: ";
cin.get(kingdom.m_name, 32, '\n');
cin.ignore(2000, '\n');
cout << "Enter the number of people living in " << kingdom.m_name << ": ";
cin >> kingdom.m_population;
cin.ignore(2000, '\n');
}
Lorsque le code arrive à la partie Entrez le nom du Royaume, il invite l'utilisateur à répondre, mais avant qu'il ne l'invite , Il produit juste charabia comme celui-ci
https://i.imgur.com/MSSHgvz.png
De plus, quand il fait entrer le nombre de personnes vivant dans, il serait également sortie « -842150451 » avant que je puisse même saisir un numéro valide.
Des suppositions pour résoudre le problème?
Factor sur tous les pointeurs. Ensuite, utilisez 'std :: string' à la place des tampons char. Ne faites pas 'using namespace std;' dans les en-têtes. Enfin, n'imprimez pas les variables avant qu'elles ne soient initialisées. – moooeeeep
que voulez-vous dire par factoriser tous les pointeurs? – lucas
Ne les utilisez pas dans votre code. – moooeeeep