如何比较if语句中的字符串?

时间:2019-10-08 16:06:17

标签: c++ if-statement strcpy

我是C ++的初学者,我试图创建一个可以在将来的程序中使用的决策函数。

想法是程序将询问是/否问题,用户将输入yesno,然后他们将根据答案收到输出。但是,当我尝试运行代码时,无论答案如何,程序都会显示"yes"情况的输出。这是代码:

#include <stdlib.h>
#include <string.h>
#include <iostream>
#include <conio.h>

class dec
{
    public:
        int flag;
        char yn[3];

        void decision()
        {
            std::cout<<"Enter yes or no:\n";
            std::cin>>yn;
            flag=0;
            while(flag==0)
            {
                if(strcpy(yn,"yes"))
                    flag=1;
                else if(strcpy(yn,"no"))
                    flag=-1;
                else
                {
                    std::cout<<"Invalid input.\n";
                    flag=0;
                }
            }
        }
        void reset()
        {
            flag=0;
        }
};

main()
{
    dec d;
    std::cout<<"Test?\n";
    d.decision();
    if(d.flag==1)
        std::cout<<"Correct.";
    else
        std::cout<<"Wrong.";
}

无论我键入什么,输出始终为"Correct"。请帮忙。

PS:我正在使用flag,以便可以在需要时再次使用该功能。

1 个答案:

答案 0 :(得分:4)

strcpy() 复制到字符数组中。相反,您需要使用strcmp()比较两个数组。您是这样做的:

if (strcmp(yn, "yes") == 0)

还要注意,您需要声明char yn[4]来允许终止NULL字符。

或者,您可以使用std::string而不是数组,然后将字符串与==进行比较:

if (yn == "yes")