未声明的问题,不确定如何解决

Undeclared issue, not sure how to fix

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

#include <iostream>
#include <string>
#include <vector>
using std::cout, std::cin, std::string, std::vector;

void printUserList(vector<string> listUser) {
    cout << "Current User List\n";

    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 username\n"
             << "2. List all username\n"
             << "3. Delete a username\n"
             << "X. Exit\n";
        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 added\n\n";
            }

        } 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),除了添加用户之外,您没有其他用途。

        case '1': {
            cout << "Enter username: ";
            getline(cin, userName);
            cout << "\n";

            if(userName.size() > 0) {
                addUser.push_back(userName);       //  <- here
                cout << "User has been added\n\n";
            }

        } break;

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

                userBase.push_back(userName);

您有 2 个单独的 vector 对象 - addUseruserBase。您仅将所有用户名添加到 addUser,但您正在打印和删除 userBase 中的用户名。这就是为什么你什么都看不到的原因。

完全删除 addUser,您不需要它。改为将您的用户名添加到 userBase