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

How to compare string in if statement?

我是 C++ 的初学者,我正在尝试制作一个可以在以后的程序中使用的决策函数。

这个想法是程序会问一个 yes/no 问题,用户会输入 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 以便在需要时可以再次使用该功能。

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

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

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

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

进行比较
if (yn == "yes")