gpt4 book ai didi

c++ - 如何从 C++ 中的文件中读取乘法字符数组

转载 作者:行者123 更新时间:2023-11-27 23:58:09 24 4
gpt4 key购买 nike

文件“Athlete info.txt”如下所示:

Peter Gab 2653 Kenya 127

Usain Bolt 6534 Jamaica 128

Bla Bla 2973 Bangladesh -1

Some Name 5182 India 129

我希望我的代码做的是读取第一个字符串并将其分配给 firstName 数组(例如 Peter 存储在 firstName[0] 中),读取第二个字符串并将其分配给 lastName 数组(例如 Gab 存储在 lastName[0] 中)等等。我尝试了很多不同的方法,甚至尝试过使它成为所有字符串数组,但它不起作用。如果有人能告诉我代码中有什么问题或如何解决,那就太好了!

提前致谢!

void readInputFromFile()
{
ifstream inputData;
inputData.open("Athlete info.txt");

const int SIZE=50;
char firstName[SIZE],
lastName[SIZE],
athleteNumber[SIZE],
country[SIZE];
int athleteTime[SIZE];

int numOfCharacters=0;

if (inputData.is_open())
{
int i=0;

while(!inputData.eof())
{
inputData >> firstName[i];
inputData >> lastName[i];
inputData >> athleteNumber[i];
inputData >> country[i];
inputData >> athleteTime[i];
i++;
numOfCharacters++;
}

for (int i=0; i < numOfCharacters; i++ )
{
cout << "First Name: " << firstName[i];
cout << "Last name: " << lastName[i];
cout << "AthleteNumber: " << athleteNumber[i];
cout << "Country: " << country[i];
cout << "Time taken: " << athleteTime[i];
cout << endl;
}

}
else
{
cout << "ERROR" << endl;
}
inputData.close();
}

最佳答案

首先,您使用的是 C++,所以让我们使用 std::string,并使用类。让我们创建 Athlete 结构,其中包含您的运动员所需的一切:

struct Athlete {
Athlete() = default;
Athlete(std::stringstream &stream) {
stream >> firstName
>> lastName
>> athleteNumber
>> country
>> athleteTime;
}
// every Athlete is unique, copying should be prohibited
Athlete(const Athlete&) = delete;

std::string firstName;
std::string lastName;
std::string athleteNumber;
std::string country;
std::string athleteTime;
}

也许您可以在这方面多做一些工作并更好地封装它。

现在我们将使用 std::vector 来存储 Athletes,并且每次我们 push_back 时,我们都会使用输入文件中的读取行来调用 Athelete 构造函数。稍后您可以使用基于范围的 for 循环来访问 vector 中的每个运动员。另请注意,ifstream 不会手动关闭,它会在对象超出范围时自动关闭。

void readInputFromFile() {
ifstream inputData("Athlete info.txt");
std::vector<Athlete> athletes;

std::string line;
std::stringstream ss;

if (inputData.is_open() {
while (getline(inputData, line)) {
ss.str(line);
// directly construct in-place
athletes.emplace_back(ss);
}

for (const Athlete& a : athletes) {
/* ...*/
}
} else {
std:cerr << "ERROR" << std::endl;
}
}

关于c++ - 如何从 C++ 中的文件中读取乘法字符数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41077566/

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