gpt4 book ai didi

c++ - c++ 中的 .erase() 问题

转载 作者:行者123 更新时间:2023-11-30 00:56:29 25 4
gpt4 key购买 nike

我正在构建一个游戏库,我希望用户能够删除游戏。我正在尝试使用 .erase() 函数,但我在某处犯了一个错误。我正在研究我的代码好几天了,但找不到答案。为什么?因为我只有 15 岁,没有其他程序员所拥有的那种编程头脑。这就是为什么我不称自己为程序员,而只是一个有抱负的少年。请帮我。 (对不起我的拼写错误)

这是我的代码:

int main()
{
vector<string>::const_iterator myIterator;
vector<string>::const_iterator iter;
vector<string> games;
games.push_back("Crysis2");
games.push_back("GodOfWar3");
games.push_back("FIFA12");

cout <<"Welcome to your Games Library.\n";
cout <<"\nWarning!!! Don't type spaces, put ecerything together!!!\n";
cout <<"\nThese are your games:\n";
for (iter = games.begin(); iter != games.end(); ++iter)
{
cout <<*iter <<endl;
}
//the loop!
string action;
string newGame;

cout <<"\n-Type 'exit' if you want to quit.\n-Type 'add' if you want to add a game.\n-Type 'delete' if you want to delete a game.\n-Type 'find' if you want to search a game.\n-Type 'game' if you don't know what game to play. ";

while (action != "exit")
{


cout <<"\n\nWhat do you want to do: ";
cin >> action;


if (action == "add")
{
cout <<"\nType the name of the game you want to add: ";
cin >> newGame;

games.push_back(newGame);

for (iter = games.begin(); iter != games.end(); ++iter)
{
cout <<*iter <<endl;
}

continue;
}
else if (action == "delete")
{
cout <<"Type the name of the game you want to delete: ";
cin >> newGame;

iter = find(games.begin(), games.end(), newGame);

if(iter != games.end())
{
games.erase(newGame);
}
else
{
cout<<"\nGame not found.";
}

continue;
}
else if (action == "find")
{
cout <<"Which game you want to look for in your library: ";
cin >> newGame;

iter = find(games.begin(), games.end(), newGame);

if (iter != games.end())
{
cout << "Game found.\n";
}
else
{
cout << "Game not found.\n";
}

continue;
}
else if (action == "game")
{
srand(static_cast<unsigned int>(time(0)));
random_shuffle(games.begin(), games.end());
cout << "\nWhy don't you play " <<games[0];

continue;
}
else if (action == "quit")
{
cout <<"\nRemember to have fun while gaming!!\n";
break;
}
else
{
cout <<"\nCommand not found";
}
}
return 0;
}

最佳答案

您只是传递了错误的参数来删除。代码

if(iter != games.end())
{
games.erase(newGame);
}

应该是

if(iter != games.end())
{
games.erase(iter);
}

关于c++ - c++ 中的 .erase() 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10042552/

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