未声明的问题,不确定如何修复



此程序用于存储用户名列表、添加用户名以及删除用户名。除了第一步之外,我的代码按预期工作。每当我输入要存储的名称时,列表中都不会显示任何内容,因此无法删除任何内容。我不确定我在哪里搞砸了,因为我看了一遍,一切看起来都很好。我也没有收到任何错误消息,所以我没有任何方向,我应该寻找什么。任何帮助都将是伟大的,谢谢。

#include <iostream>
#include <string>
#include <vector>
using std::cout, std::cin, std::string, std::vector;
void printUserList(vector<string> listUser) {
cout << "Current User Listn";
for(int x = 0; x < listUser.size(); ++x) {
cout << x << "" << listUser[x] << "n";
}
}
int main() {
vector<string> addUser;
vector<string> userBase;
string userName;
char choice;
bool keepLooping = true;
while(keepLooping) {
cout << "User Options:n"
<< "1. Add a usernamen"
<< "2. List all usernamen"
<< "3. Delete a usernamen"
<< "X. Exitn";
cout << "Enter Option: ";
cin >> choice;
cin.ignore();
switch(choice) {
case '1': {
cout << "Enter username: ";
getline(cin, userName);
cout << "n";
if(userName.size() > 0) {
addUser.push_back(userName);
cout << "User has been addednn";
}
} break;
case '2': {
printUserList(userBase);
} break;
case '3': {
int index;
printUserList(userBase);
cout << "Enter the index of the user: ";
cin >> index;
cin.ignore();
if(index < userBase.size()) {
userBase.erase(userBase.begin() + index);
cout << "User deleted";
}
} break;
case 'X': {
userBase.clear();
keepLooping = false;
} break;
default: {
cout << "Option not found, please try again.";
}
}
}
return 0;
}

您有两个独立的vector对象——addUseruserBase。您只是将所有用户名添加到addUser中,而不是打印和删除userBase中的用户名。这就是为什么你什么都没看到。

完全去掉addUser,你不需要它。改为将你的用户名添加到userBase中。

这是因为您将用户添加到vector(名为addUser)中,除了添加用户之外,您什么都不使用。

case '1': {
cout << "Enter username: ";
getline(cin, userName);
cout << "n";
if(userName.size() > 0) {
addUser.push_back(userName);       //  <- here
cout << "User has been addednn";
}
} break;

在所有其他地方,您使用的是不同的vectoruserBase,所以将上面的行更改为

userBase.push_back(userName);

相关内容

最新更新