无法比较C ++中的两个字符串

时间:2017-11-17 02:04:40

标签: c++ string compare

我在c ++中遇到了一些代码问题。好像我不能比较字符串使用if运算符。这是我的代码:

//correct creds
std::string uname ("admin");
std::string pass ("password");

//input creds
std::string r_uname;
std::string r_pass;

//ui
printf("%s \n", "Please enter username");
scanf("%s", r_uname);
printf("%s \n", "Please enter password");
scanf("%s", r_pass);

//cred check
if((r_uname == uname) && (r_pass == pass)){
    printf("%s", "You are in");
}
else{
    printf("%s", "Wrong username/password");
}

库包括:stdio.h和string

提前致谢。

2 个答案:

答案 0 :(得分:2)

您使用的是C++,默认情况下使用的是来自std::cout的{​​{1}}和std::cin,除非您有充分理由不这样做。

在您的情况下,您正在使用iostream来阅读用户输入。 scanf()只能读入scanf()样式字符串AKA C。我认为你的代码甚至不会在大多数编译器中编译,因为你传入了char arrays。此外,您正在比较std::string样式字符串,它只是比较数组开头的内存地址。您应该使用C来比较strcmp()字符串。

以下是使用C ++比较字符串的方法:

C

答案 1 :(得分:1)

在C ++中使用string,你应该使用cin或cout而不是scanf或printf。 要在C ++中使用cin,您需要包含

这是代码

#include <iostream>
#include <string>

int main()
{
    //correct creds
    std::string uname ("admin");
    std::string pass ("password");

    //input creds
    std::string r_uname;
    std::string r_pass;

    std::cout << "Enter username: " << std::endl;
    cin >> r_uname;

    std:: cout << "Enter password: " << std::endl;
    cin >> r_pass;

    //cred check
    if ((r_uname == uname) && (r_pass == pass)){    
        std::cout << "You're in!" << std::endl;
    } else {
        std::cout << "Wrong credentials" << std::endl;
    }
    return 0;
}