C++ Fstream正在耗尽我的生命
我有一个计算机类的代码编写作业,其中包括fstream类。我必须编写管理和存储用户数据的代码。C++ Fstream正在耗尽我的生命,c++,fstream,ifstream,ofstream,C++,Fstream,Ifstream,Ofstream,我有一个计算机类的代码编写作业,其中包括fstream类。我必须编写管理和存储用户数据的代码。 我很难在课堂上理解这个概念,C++教科书只想让我看到IPO图表而不是代码。 如果有人能帮助我编写代码,以及如何将用户输入的数据存储在记事本上,我将不胜感激。 提前谢谢你的帮助,我已经找了好几天了,还没找到答案 #包括 #包括 #包括 使用名称空间std; const int MAXLASTNAME=20; const int MAXFIRSTNAME=10; const int MAXPLAYERS
我很难在课堂上理解这个概念,C++教科书只想让我看到IPO图表而不是代码。 如果有人能帮助我编写代码,以及如何将用户输入的数据存储在记事本上,我将不胜感激。
提前谢谢你的帮助,我已经找了好几天了,还没找到答案
#包括
#包括
#包括
使用名称空间std;
const int MAXLASTNAME=20;
const int MAXFIRSTNAME=10;
const int MAXPLAYERS=20;
结构棒球{
char FirstName[MAXFIRSTNAME+1];
char LastName[MAXLASTNAME+1];
浮动AB;
浮动单打;
浮动双打;
浮动三元组;
浮动人力资源;
漂浮行走;
双BA;
双SA;
双卵圆;
};
int getData(棒球[]);
void showData(棒球[],int);
int main()
{
棒球数据[超级球员];
int players=getData(stats);
显示数据(统计数据、玩家);
}
//函数:int getData
//描述:获取用户希望输入的所有玩家的数据
//输入:平均值的数字数据和玩家姓名的字符
//输出:无
int getData(棒球统计数据[])
{
国际一级,球员;
cout>玩家;
cout您可以调整showData
函数以使用std::ofstream
代替std::cout
bool writeData(Baseball stats[], int players, std::string const& filePath)
{
std::ofstream ofs(filePath);
if(!ofs.is_open())
return false; // failed to open stream
ofs << endl << endl;
ofs << "lets see how this aquasock stats stack up!\n\n";
ofs << "First Name" << setw(14) << "Last Name" << setw(6) << "AB" << setw(6) << "1B" << setw(6) << "2B";
ofs << setw(6) << "3B" << setw(6) << "HR" << setw(6) << "BB" << setw(6) << "BA" << setw(6) << "SA";
ofs << setw(6) << "OBA" << "\n";
ofs << "----------" << setw(14) << "---------" << setw(6) << "--" << setw(6) << "--" << setw(6) << "--";
ofs << setw(6) << "--" << setw(6) << "--" << setw(6) << "--" << setw(6) << "--" << setw(6) << "--";
ofs << setw(6) << "---" << "\n";
for(int i = 0; i < players; ++i)
{
ofs << stats[i].FirstName
<< setw(15) << stats[i].LastName
<< setw(8) << stats[i].AB
<< setw(8) << stats[i].singles
<< setw(8) << stats[i].doubles
<< setw(8) << stats[i].triples
<< setw(8) << stats[i].HR
<< setw(8) << stats[i].walks
<< setw(8) << stats[i].BA
<< setw(8) << stats[i].SA
<< setw(8) << stats[i].OBA
<< endl;
}
return true;
}
并将cout
s更改为os
s。然后您可以使用它写入控制台:
writeData(stats, players, std::cout);
或文件:
std::ofstream ofs(filePath);
if(!ofs.is_open())
{
// error
}
writeData(stats, players, ofs);
我希望这能解决你的疑问。顺便说一句,你确定一名球员的BA是根据所有其他球员的累积统计数据计算出来的(参考getData
中的行sum+=…
)?这非常有帮助,我非常感谢你。存储代码中的数据真的那么简单吗?难怪我弄错了,我觉得每一行都必须有一个流修饰符。再次感谢你的帮助出于某种奇怪的原因代码现在无法编译,codebloc告诉我在我的int main中没有匹配函数。@mcmoroge LogicStuff已正确回答了您的问题。正确的回答是。您现在遇到了一个新问题,这显然是由您自己的编码错误造成的。如果您无法尽最大努力解决此问题,请随意问另一个问题。接受正确的答案会增加您获得fu答案的机会R还有其他问题。@mcmoroge我打赌你忘了更改/添加writeData的前向声明
,或者没有更改showData(统计数据,玩家);
,如果你已经覆盖/删除了它。@MikeKinghan我明白你的意思,谢谢你让我知道,我只是被编码弄得不知所措,我认为所有的问题都是相关的。
std::ofstream ofs(filePath);
if(!ofs.is_open())
{
// error
}
writeData(stats, players, ofs);