C++ c++;登录系统-如何返回用户名?
我是一个初学者程序员,刚刚开始使用类和对象,所以请原谅我造成的混乱 此函数的目标是检查用户名文件是否存在,如果存在,请将用户名返回main.cpp,这样我就可以将其存储在main中,并在需要时使用它更新该特定文件 根据我目前的研究,你不能返回一个字符串或字符数组,从类似的情况下,他们建议使用向量代替,这是我的正确路径还是有其他解决方案?我还知道,到目前为止,我已经使用了void和no-return类型(用于测试目的)。 //登录类文件C++ c++;登录系统-如何返回用户名?,c++,return-type,login-system,C++,Return Type,Login System,我是一个初学者程序员,刚刚开始使用类和对象,所以请原谅我造成的混乱 此函数的目标是检查用户名文件是否存在,如果存在,请将用户名返回main.cpp,这样我就可以将其存储在main中,并在需要时使用它更新该特定文件 根据我目前的研究,你不能返回一个字符串或字符数组,从类似的情况下,他们建议使用向量代替,这是我的正确路径还是有其他解决方案?我还知道,到目前为止,我已经使用了void和no-return类型(用于测试目的)。 //登录类文件 void Login::UserSelectLogin()
void Login::UserSelectLogin()
{
Draw Gotoxy;
Draw ObjectLogin;
Draw ObjectBorder;
string password;
string userName;
bool loginSucceed;
do
{
system("CLS");
ObjectBorder.Border();
ObjectLogin.Login();
//USER INPUTS
Gotoxy.gotoxy(27, 6);
cin >> userName;
Gotoxy.gotoxy(27, 7);
cin >> password;
if (ifstream(userName))
return userName;
else
{
Gotoxy.gotoxy(30, 8);
cout << "USER ALREADY EXISTS";
loginSucceed = false;
_getch();
}
} while (loginSucceed != true);
}
void Login::UserSelectLogin()
{
画哥特;
绘制对象登录;
绘制对象边界;
字符串密码;
字符串用户名;
布尔登录成功;
做
{
系统(“CLS”);
ObjectBorder.Border();
ObjectLogin.Login();
//用户输入
Gotoxy.Gotoxy(27,6);
cin>>用户名;
Gotoxy.Gotoxy(27,7);
cin>>密码;
if(ifstream(用户名))
返回用户名;
其他的
{
Gotoxy.Gotoxy(30,8);
cout您可以按值返回字符串。只需声明函数以返回std::string
,并在函数中使用类似于returnusername;
的内容
如果用户名文件存在,则将用户名返回到
main.cpp,这样我就可以将它存储在main中并使用它进行更新
如果需要的话,可以使用该特定文件
您可以考虑将字符串用户名移动为一个正式参数(通过引用)…
不需要返回用户名(您的代码缺少返回类型)
注意:当登录失败时,您可能应该确保userName.size()为0。(即,将其设置为空字符串)
更新:使用说明
使用上面的声明,以及类似以下的实现:
void Login::UserSelectLogin(std::string& userName){ /*..implementation..*/ };
然后,在main或任何函数中,您将使用以下命令调用:
// assume
Login aLogin; // default ctor
// ...
// ... time to fetch login name
std::string aUserName; // default ctor creates null string
aLogin.UserSelectLogin(aUserName); // formal parameter is local var
// ... continue
什么意思,您不能返回字符串?std::string Login::SelectUserLogin(){std::string str;…return str;}
C2039'UserSelectLogin':不是'Login'Alpha 1.4 Error C2039'string'的成员:不是'std'Alpha 1.4 Error C3646'UserSelectLogin'的成员:未知重写说明符8 Error C2059语法错误:'('Alpha 1.4 e:\game development\game dev\Alpha 1.4\Alpha 1.4\login.h8错误C2238意外标记前面“;'Error C2039'string”:不是'std'Error C3646'UserSelectLogin'的成员:未知重写说明符错误C2059语法错误:'('Alpha 1.4 e:\game Error C2238意外标记)前面的“;”Alpha 1.4 Error C2039'UserSelectLogin':不是“Login”的成员它只是在我尝试这些更改时抛出了这些错误,如果我也发布main.cpp代码和函数定义会有帮助吗?听起来你需要在这里的文件中包含
。另外,你被告知Login::UserSelectLogin()
未在类定义中声明,因此请确保将void UserSelectLogin();
(或std::string UserSelectLogin();
,如果您试图实现该功能,请将其放在Login
类中的某个位置;void UserSelectNewUser();};#endif当我在main中为UserSelectLogin函数指定对象并使用pass by reference方法时,我会这样写它吗。userName=logiuser.UserSelectLogin();
void Login::UserSelectLogin(std::string& userName)
{
...
userName = "";
void Login::UserSelectLogin(std::string& userName){ /*..implementation..*/ };
// assume
Login aLogin; // default ctor
// ...
// ... time to fetch login name
std::string aUserName; // default ctor creates null string
aLogin.UserSelectLogin(aUserName); // formal parameter is local var
// ... continue