C++ tableau 2d de .fichier txt
Mon code affiche un wacked version de un .fichier txt qui affiche une 20x20 table des caractères et des espaces blancs. Comment puis-je obtenir le tableau à afficher correctement comme il le fait dans la .txt. Je ne peux pas utiliser des vecteurs ou des variables globales. Il peut être fait sans ceux. Les deux premières lignes du texte sont 20 et 20 pour obtenir les dimensions de la matrice.
ifstream inputFile;
int boardSizeRow;
int boardSizeCol;
inputFile.open("fileboard1.txt");
inputFile >> boardSizeRow;
inputFile >> boardSizeCol;
inputFile.get();
char gameBoard[20][20];
for (int row = 0; row < boardSizeRow; row++)
{
for (int col = 0; col < boardSizeCol; col++)
{
gameBoard[row][col] = inputFile.get();
}
}
for (int row = 0; row < boardSizeRow; row++) //////////////TO TEST PRINT
{
for (int col = 0; col < boardSizeCol; col++)
{
cout << gameBoard[row][col];
}
inputFile.get();
cout << endl;
}
return 0;
20
20
WWWWWWWWWWWWWWWWWWWW
W GO W W
W WW w S W
W W GW w W
WPW WW G W
WK W W
W W W W w w W
W WK W W
W SW U w w W
W
w G W
G w w W
D wwwww W
w D W
w w W w w W
ww w w w W
G w W
ww w S w W
WWW G W
WWWWWWWWWWWWWWWWWWWW
- Pouvez-vous s'il vous plaît montrer le fichier que vous êtes en train de lire? Ne contient pas d'espaces entre les caractères que vous obtenez? Contient-il des retours à la ligne?
- Aussi, pourquoi la
inputFile.get();
dans la 2ème boucle (juste au-dessus decout << endl;
)? C'est qu'un copier-coller d'erreur? - Le fichier a été ajouté
cout << gameBoard[row][col];
n'est même pas définie comportement. il va à la sortie du contenu de la mémoire de l'emplacement jusqu'à ce qu'un caractère nul il atteint- j'ai couru que j'ai donc pu voir comment le jeu conseil d'administration a été lu
- peut-être. mais il est difficile de voir comment cette ligne de code va vous dire quelque chose
Vous devez vous connecter pour publier un commentaire.
C'est la réponse 🙂
Ok plusieurs modifications:
L'entrée:
Le code:
}
gameBoard
n'est pas valide. Aussi, vous n'obtenez pas le retour à la ligne correctement.char *gameBoard= new char[0xfff];
etinputFile >> *(gameBoard + boardSizeCol * row + col);
etcout << *(gameBoard + boardSizeCol * row + col) << " ";
Mais quel est le problème avec de nouvelles lignes? Elle fonctionne.De Comment dois-je déclarer un tableau 2d en C++ à l'aide de nouvelles?
Viens de faire:
Le fichier contient des retours à la ligne entre les lignes, vous n'avez pas gérer cela. Ainsi, après vous avoir lu la première ligne, vous avez lu l'un (ou deux sur la plate-forme Windows) les caractères de saut de ligne comme le premier caractère(s) dans la deuxième rangée.
Je vous suggère d'utiliser un
std::vector
destd::string
. Une chaîne de caractères par ligne.Quelque chose comme:
La condition de la boucle lors de la lecture du fichier est de vérifier d'abord que nous ne lisons plus que ce qui est demandé dans le fichier, et aussi que la lecture opération s'est déroulée avec succès.
Si votre compilateur ne peut pas gérer C++11 de la gamme, à base de boucles (utilisé pour imprimer le conseil d'administration), vous devez le faire de la "à l'ancienne" avec des itérateurs: