未声明的问题,不确定如何解决
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;
在所有其他地方,您使用的是不同的 vector
、userBase
,因此请将上面的行更改为
userBase.push_back(userName);
您有 2 个单独的 vector
对象 - addUser
和 userBase
。您仅将所有用户名添加到 addUser
,但您正在打印和删除 userBase
中的用户名。这就是为什么你什么都看不到的原因。
完全删除 addUser
,您不需要它。改为将您的用户名添加到 userBase
。
该程序用于存储用户名列表、添加用户名以及删除用户名。除了第一步之外,我的代码按预期工作。每当我输入要存储的名称时,列表中没有任何内容显示,因此无法删除任何内容。我不确定我哪里搞砸了,因为我检查了一下,一切看起来都很好。我也没有收到任何错误消息,所以我不知道我应该寻找什么。任何帮助都会很棒,谢谢。
#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;
在所有其他地方,您使用的是不同的 vector
、userBase
,因此请将上面的行更改为
userBase.push_back(userName);
您有 2 个单独的 vector
对象 - addUser
和 userBase
。您仅将所有用户名添加到 addUser
,但您正在打印和删除 userBase
中的用户名。这就是为什么你什么都看不到的原因。
完全删除 addUser
,您不需要它。改为将您的用户名添加到 userBase
。