我的程序很疯狂,老实说我很困惑(c++)
My program is crahing, and honestly i am confused (c++)
由于某种原因,我的程序在收到用户的输入后立即崩溃。然而,最奇怪的是,只有当用户输入Yes
时,它才会崩溃,而不是当他们输入n
o时。我认为这与类Players
有关。我已经尝试过通过所有常规方法进行调试。断点似乎不起作用,因为如果我把它放在cout << "Is this the first time...
之后,没有一个变量会有任何数据,因为它们没有被赋值。它完美地工作,直到我制作了readPlayerData
函数,然后崩溃开始了。
using namespace std;
int main() {
mt19937 rand_engine(time(nullptr));
vector<Player> plyrs;
srand(time(NULL));
bool firstTimer = false;
cout << "Is this the first time this program has run?" << endl;
string firstTime;
cin >> firstTime;
if (firstTime == "Yes" || firstTime == "yes") {
firstTimer == true;
for (int i = 0; i < 30; i++) {
int limit = 18; // rand() % (25 - 18) + 18;
for (int w = 0; w < limit; w++) {
int z = plyrs.size();
plyrs.resize(z + 1);
plyrs[z].setPlayeName(rand_engine);
plyrs[z].setPlyrVal();
plyrs[z].setPlayerTeam(i);
}
}
string human_input;
cout << "Pick a # between 1-30, this will be your team: " << endl;
cin >> human_input;
int human_teamInput = 0;
human_teamInput = atoi(human_input.c_str());
ofstream plyrdata;
plyrdata.open("plyr.txt");
plyrdata << human_teamInput << endl;
plyrdata.close();
ofstream playerSaveData;
playerSaveData.open("savedata.txt");
for (int i = 0; i < plyrs.size(); i++) {
playerSaveData << plyrs[i].plName << endl;
playerSaveData << plyrs[i].plOvr << endl;
playerSaveData << plyrs[i].ploaw << endl;
playerSaveData << plyrs[i].pldaw << endl;
playerSaveData << plyrs[i].pldspg << endl;
playerSaveData << plyrs[i].pldsps << endl;
playerSaveData << plyrs[i].plSpg << endl;
playerSaveData << plyrs[i].plSps << endl;
playerSaveData << plyrs[i].plteam
<< (i < (plyrs.size() - 1) ? "n" : "");
}
playerSaveData.close();
assemble_Team_Data();
}
else {
assemble_Team_Data();
}
Sleep(10000);
return 0;
}
这是readPlayerData()的代码
void readPlayerData() {
numFnames = 1;
numLnames = 1;
string line;
ifstream fnameFile("PlayersFname.txt");
if (fnameFile.is_open()) {
while (fnameFile.eof() == false) {
plFname.resize(numFnames);
getline(fnameFile, line);
numFnames += 1;
}
fnameFile.close();
}
ifstream lnameFile("PlayersLname.txt");
if (lnameFile.is_open()) {
while (lnameFile.eof() == false) {
plLname.resize(numLnames);
getline(lnameFile, line);
numLnames += 1;
}
lnameFile.close();
}
}
void setPlayeName(mt19937& rand_engine) {
readPlayerData();
uniform_int_distribution<int> fname_rand(0, numFnames);
string fname = plFname[fname_rand(rand_engine)];
uniform_int_distribution<int> lname_rand(0, numLnames);
string lname = plLname[lname_rand(rand_engine)];
plName = string(fname + " " + lname);
}
不太可能是你的崩溃,但这段代码很可怕:
if (fnameFile.is_open())
{
while (fnameFile.eof() == false)
{
plFname.resize(numFnames);
getline(fnameFile,line);
numFnames += 1;
}
fnameFile.close();
}
它没有正确检查文件结尾,因为文件结尾发生在getline期间,而不是之前。而line
变量毫无用处。尝试
while (getline(fnameFile,line)) plFnames.push_back(line);
fnameFile.close();
相关文章:
- OpenMP卸载说'fatal error: could not find accel/nvptx-none/mkoffload'
- g++ 说函数不存在,即使包含正确的标头
- CLANG 编译器 说:变量"PTR"可能未初始化
- C++ 链接到单独的.cpp文件说"multiple definitions"
- 我无法在Visual Studio代码中使用CIN输入答案,它说输入您的年龄,但它说只读文本编辑器如何解决这个问题?
- 确切地说,如何解释 std::getline(stream, string) 函数在C++中填充的字符串
- VSCode 说 std::chrono 是模棱两可的,如果运算符<<重载
- C++98,但叮叮当当地说使用nullptr?
- 我正在尝试一个傻瓜 C++ 练习,我遇到了一个错误,说类 'GraduateStudent' 没有任何名为 'advisor' 的字段
- 错误消息"expected expression"....有人知道它为什么这么说吗?
- 为什么编译器说"candidate template ignored: couldn't infer template argument 'InputIterator'"?
- 我不确定为什么代码没有运行,它在编译时抛出错误,说它无法找到 PrintArray()
- C++ 在编译过程中 strtok 函数 Eclipse 说没有在范围内声明?
- 错误:类没有名为"ThisW"的成员;你是说"这个"吗?但是代码没有说"ThisW",它已经说了"This"
- 错误说"camera is undefined",但我确实定义了它
- Visual Studio 2017调试控制台说"ops"
- cpp 模板专用化,错误说参数 1 的类型为 T,这取决于参数 T
- 编译我的 3 个文件时,我收到错误,说"运算符="不匹配
- 为什么在 C++ 中说"can't find constructor"?
- 我的程序很疯狂,老实说我很困惑(c++)