Ik probeer een tekstbestand op het scherm af te drukken met behulp van arrays, maar ik weet niet zeker waarom het er niet uitziet zoals het in het tekstbestand staat.
Het tekstbestand:
1 2 3 4
5 6 7 8
Weergegeven op het scherm als volgt na het toepassen van de verwijderfunctie:
1
2
3
4
5
6
7
8
De code:
#include <iostream>
#include <fstream>
#include <stdlib.h>
#include <string>
using namespace std;
const int MAX_SIZE = 20;
const int TOTAL_AID = 4;
void discard_line(ifstream &in);
void print(int print[][4] , int size);
int main()
{
//string evnt_id[MAX_SIZE]; //stores event id
int athlete_id[MAX_SIZE][TOTAL_AID]; //stores columns for athelete id
int total_records;
char c;
ifstream reg;
reg.open("C:\\result.txt");
discard_line(reg);
total_records = 0;
while( !reg.eof() )
{
for (int i = 0; i < TOTAL_AID; i++)
{
reg >> athlete_id[total_records][i] ;//read aid coloumns
}
total_records++;
reg.get(c);
}
reg.close();
print(athlete_id, total_records);
system("pause");
return 0;
}
void discard_line(ifstream &in)
{
char c;
do
in.get(c);
while (c!='\n');
}
void print(int print[][4] , int size)
{
cout << " \tID \t AID " << endl;
for (int i = 0; i < size; i++)
{
for (int j = 0; j < TOTAL_AID; j++)
{
cout << print[i][j] << endl;
}
}
}
Antwoord 1, autoriteit 100%
Je drukt std::endl
af na elk nummer. Als u 1 rij per regel wilt hebben, moet u na elke rij std::endl
afdrukken. Voorbeeld:
#include <iostream>
int main(void)
{
int myArray[][4] = { {1,2,3,4}, {5,6,7,8} };
int width = 4, height = 2;
for (int i = 0; i < height; ++i)
{
for (int j = 0; j < width; ++j)
{
std::cout << myArray[i][j] << ' ';
}
std::cout << std::endl;
}
}
Houd er ook rekening mee dat het schrijven van using namespace std;
aan het begin van uw bestanden als een slechte gewoonte wordt beschouwd, omdat hierdoor sommige door de gebruiker gedefinieerde namen (van typen, functies, enz.) dubbelzinnig worden. Als je uitputtende voorvoegsels met std::
wilt vermijden, gebruik dan using namespace std;
binnen kleine scopes zodat andere functies en andere bestanden niet worden beïnvloed.
Antwoord 2, autoriteit 6%
Het is niet alleen een vergissing dat je de “endl” mist.
Het programma zal ook de eerste regel in het bronbestand overslaan vanwege het aanroepen van de functie uninstall_line(reg), zodat u alleen de andere gegevens kunt krijgen (5 6 7 8). Het is helemaal niet nodig om de functie te gebruiken.
zorg er daarnaast voor dat u de array init en controleer de grens van de array, zoals MAX_SIZE, om te garanderen dat de invoergegevens de array niet overlopen.
Antwoord 3
je kunt het zo doen
#include <iostream>
int your_array[2][4] = {
{1,2,3,4},
{5,6,7,8}
};
using namespace std;
int main() {
// get array columns and rows
int rows = sizeof your_array / sizeof your_array[0];
int cols = sizeof your_array[0] / sizeof(int);
// Print 2d Array
cout << "your_array data "<<endl<<endl;
for (int i = 0; i < rows; ++i)
{
for (int j = 0; j < cols; ++j)
{
std::cout << your_array[i][j] << std::endl;
}
// std::cout << std::endl;
}
}
uitvoer
1
2
3
4
5
6
7
8