我是C ++的初学者,我试图创建一个可以在将来的程序中使用的决策函数。
想法是程序将询问是/否问题,用户将输入yes
或no
,然后他们将根据答案收到输出。但是,当我尝试运行代码时,无论答案如何,程序都会显示"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
,以便可以在需要时再次使用该功能。
答案 0 :(得分:4)
strcpy()
将复制到字符数组中。相反,您需要使用strcmp()
来比较两个数组。您是这样做的:
if (strcmp(yn, "yes") == 0)
还要注意,您需要声明char yn[4]
来允许终止NULL字符。
或者,您可以使用std::string
而不是数组,然后将字符串与==
进行比较:
if (yn == "yes")