此程序用于存储用户名列表、添加用户名以及删除用户名。除了第一步之外,我的代码按预期工作。每当我输入要存储的名称时,列表中都不会显示任何内容,因此无法删除任何内容。我不确定我在哪里搞砸了,因为我看了一遍,一切看起来都很好。我也没有收到任何错误消息,所以我没有任何方向,我应该寻找什么。任何帮助都将是伟大的,谢谢。
#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
对象——addUser
和userBase
。您只是将所有用户名添加到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;
在所有其他地方,您使用的是不同的vector
、userBase
,所以将上面的行更改为
userBase.push_back(userName);