如何解决未声明的问题,不知道如何解决
该程序旨在存储用户名列表、添加用户名以及删除用户名。除了第一步之外,我的代码按预期工作。每当我输入要存储的名称时,列表中都不会显示任何内容,因此无法删除任何内容。我不确定我在哪里搞砸了,因为我检查了它,一切看起来都很好。我也没有收到任何错误消息,所以我没有任何关于我应该寻找什么的方向。任何帮助都会很棒,谢谢。
#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;
}
解决方法
这是因为您将用户添加到 #include <cs50.h>
#include <stdio.h>
#include <math.h>
long countDigit(long long n);
int main(void)
{
long n;
//This is asking for the input
do
{
n = get_long("Number: ");
}
while(!(countDigit(n)>12));
//Checksum math
long everyOther = 0;
long array[8];
int i = 0;
while(n > 0)
{
long lastNumber = n/10;
everyOther = lastNumber % 10;
n = n / 100;
printf("%li\n",everyOther);
array[i] = everyOther;
i++;
}
printf("\n");
printf("%li\n",array[0]);
printf("%li\n",array[1]);
printf("%li\n",array[2]);
printf("%li\n",array[3]);
printf("%li\n",array[4]);
printf("%li\n",array[5]);
printf("%li\n",array[6]);
printf("%li\n",array[7]);
printf("\n");
// long Multi = ((2*(array[0])) + (2*(array[1])) + (2*(array[2])) + (2*(array[3]))
// + (2*(array[4])) + (2*(array[5])) + (2*(array[6])) + (2*(array[7])));
// printf("%li\n",Multi);
}
//This function helps us with the counting of the number
long countDigit(long long n) {
return floor(log10(n) + 1);
}
(名为 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
,
您有 2 个单独的 bin\intermediates\Win32\Debug
对象 - vector
和 addUser
。您仅将所有用户名添加到 userBase
,但您正在打印和删除 addUser
中的用户名。这就是为什么你什么也看不见。
完全去掉 userBase
,你不需要它。改为将您的用户名添加到 addUser
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。