C++ c++;登录系统-如何返回用户名?

C++ c++;登录系统-如何返回用户名?,c++,return-type,login-system,C++,Return Type,Login System,我是一个初学者程序员,刚刚开始使用类和对象,所以请原谅我造成的混乱 此函数的目标是检查用户名文件是否存在,如果存在,请将用户名返回main.cpp,这样我就可以将其存储在main中,并在需要时使用它更新该特定文件 根据我目前的研究,你不能返回一个字符串或字符数组,从类似的情况下,他们建议使用向量代替,这是我的正确路径还是有其他解决方案?我还知道,到目前为止,我已经使用了void和no-return类型(用于测试目的)。 //登录类文件 void Login::UserSelectLogin()

我是一个初学者程序员,刚刚开始使用类和对象,所以请原谅我造成的混乱

此函数的目标是检查用户名文件是否存在,如果存在,请将用户名返回main.cpp,这样我就可以将其存储在main中,并在需要时使用它更新该特定文件

根据我目前的研究,你不能返回一个字符串或字符数组,从类似的情况下,他们建议使用向量代替,这是我的正确路径还是有其他解决方案?我还知道,到目前为止,我已经使用了void和no-return类型(用于测试目的)。 //登录类文件

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