gpt4 book ai didi

c++ - 来自 .txt 文件的结构数组

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:58:48 26 4
gpt4 key购买 nike

有一个项目,我应该要求用户输入一个文件名,然后获取该文件并制作一个结构数组。我完全迷路了!这是我目前所拥有的

#include <iostream>
#include <fstream>
#include <string>
#include <iomanip>

using namespace std;

string filename;
ifstream inFile;

struct ftballPlayer
{
int NO;
string first;
string last;
char POS;
char clas;
int height;
char ds;
int iheight;
string hometown;
};

int counter=0;
const int MAX_PLAYER=50;
void printList(const ftballPlayer list[], int listSize);
void printOne ( ftballPlayer two);
void getData(ifstream& inFile, ftballPlayer list[], int& listSize);

int main ()
{
ftballPlayer list[MAX_PLAYER] ;
cout << "Enter the name of the input file: " ;
cin >> filename;

inFile.open(filename.c_str () );

if (!inFile)
{
cout<<"Cannot Open Input File."<<endl;
cout<< "Program Terminates!"<<endl;
return 1;
}

inFile.ignore (200,'\n');
getData (inFile, list, counter);

for ( counter = 0;counter < 50;counter++)
{
printOne (list[ counter] ) ;
cout <<endl;
}

return 0;
}

void getData(ifstream& inFile, ftballPlayer list[], int& listSize)
{
ftballPlayer item ;
listSize = 0;

inFile >> item.NO >> item.first >> item.last
>> item.POS >> item.clas >> item.height
>> item.ds >> item.iheight >> item.hometown;

while (inFile )
{
list [listSize ] = item ;
listSize++;

inFile >> item.NO >> item.first >> item.last
>> item.POS >> item.clas >> item.height
>> item.ds >> item.iheight >> item.hometown;
}

inFile.close () ;

}

void printList(const ftballPlayer list[], int listSize)
{
int looper;

for ( looper = 0; looper < listSize ; looper++)
{
printOne ( list [looper] );
cout << endl ;
}
}

void printOne ( ftballPlayer one)
{
cout << fixed << showpoint << setprecision (2);
cout << "NO " << one.NO;
cout << setw(5) << left << " Name: " << one.first << " " << one.last;

cout << " POS " << one.POS << setw(5);
cout << "Class "<<one.clas<<setw (5);
cout << "Height "<<one.height<<" "<<one.ds<<" "<<one.iheight<<setw(5);
cout << "Hometown " << one.hometown << endl;
}

有人可以告诉我我的方向是否正确吗?我得到的打印输出甚至与这个文本文件相去甚远。

NO NAME POS CLASS HEIGHT WEIGHT Hometown/High School/Last College
60 Josh Mann OL SO 6-4 300 Virginia Beach, Va./Ocean Lakes
64 Ricky Segers K/P FR 5-11 185 Glen Allen, Va./Henrico
70 Brandon Carr OL RS_SR 6-2 305 Chesapeake, Va./Western Branch/Fork Union Military Academy
53 Calvert Cook LB FR 6-0 250 Norfolk, Va./Booker T. Washington
51 Michael Colbert DE RS_SR 6-1 230 Fayetteville, N.C./E.E. Smith
22 T.J. Cowart CB RS_JR 5-9 190 Virginia Beach, Va./Ocean Lakes
1 Jakwail Bailey WR SO 5-11 185 Haddonfield, N.J./Paul VI
25 Andre Simmons S JR 6-0 205 Lorton, Va./South County/Vanderbilt
34 Johnel Anderson RB FR 5-8 180 Sicklerville, N.J./Paul VI

这是用户可以输入的三个输入之一,但它们都具有相同类型的信息。我查看了我的教科书,并在网上搜索了几个小时,当用户输入文件而不是从文件开始时,我找不到任何关于这样做的信息。任何帮助或指导将不胜感激。

最佳答案

我马上就发现了一些错误。

struct ftballPlayer
{
int NO;
string first;
string last;
char POS; // Should be multiple characters
char clas; // Should be multiple characters
int height;
char ds;
int iheight;
string hometown;
};

我怀疑如果您的 POS/类的尺寸合适,它会工作得更好。为什么不把它们变成字符串?

另外,读取最后一点也有一些问题。看起来您必须寻找/才能区分各个部分,但我看不到您这样做。

总的来说,如果您可以更改输入的格式,那么阅读这篇文章会更清晰,但我怀疑您做不到。与任何其他分隔符一样,逗号分隔值非常易于阅读。

关于c++ - 来自 .txt 文件的结构数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13370459/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com