C++ 从 'char' 到 'const char' 的无效转换

标签 c++ c arrays string strncmp

我在进行二维数组比较时遇到问题。我需要创建一个伪登录系统,要求用户输入用户名和密码,然后将输入与预定义的用户名列表进行比较。

在该函数中,预定义的用户名由*s 表示,用户输入为*s1。当我尝试编译它时,出现了这个讨厌的麻烦制造者:

68 D:\Personal\Dev-Cpp\projects\loginSysTest\main.cpp invalid conversion from char' toconst

关于 if 语句中的 strncmp 函数。

这是代码:

#define nameLenght 30
#define User 10

char usernames[User][User] = {{"student"}, {"admin"}, {"Deus Ex Machina"}};

//=====================================================================
int main(int argc, char *argv[])
{
    char usernameInput[nameLenght + 1] = {0};
    gets(usernameInput);
    int login = compS(*usernames, usernameInput);

    if(login == 0)
        printf("Access Granted! \n");
    else 
        printf("Access Denied!");

    system("PAUSE");    
    return 0;
}
//=====================================================================        

int compS(char *s, char *s1)
{ 
    for(int k = 0 ;k < nameLenght; k++)
    {
        if(strncmp(s[k], s1, strlen(s1)) == 0)
        return 1;  
    }
}

提前致谢。

最佳答案

只需按照以下行使用 std::vectorstd::string:

std::vector<std::string> usernames({"student", "admin", "Deus Ex Machina"});
std::string input;
std::cin >> input;
if (std::find(begin(usernames), end(usernames), input) != end(usernames))
    std::cout << "Access Granted!\n";
else std::cout << "Access Denied!\n";

Live demo

关于C++ 从 'char' 到 'const char' 的无效转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34424838/

相关文章:

c - C中的SysRandom是什么意思

Python和C文件同时读/写

java - 将相同的按钮数组添加到两个 JFrame

c++ - 可移植共享对象?

c++ - 以无符号为模的数组环绕

c++ - 写入套接字后管道损坏

c - 错误 : incompatible types when assigning to type 'char[20]'

c++ - Qt - 打开网址

c - 使用 getch() 重复 key 检查的问题

java - 合并排序数组中的 ArrayIndexOutOfBoundsException