如何比较if语句中的字符串?
How to compare string in if statement?
我是 C++ 的初学者,我正在尝试制作一个可以在以后的程序中使用的决策函数。
这个想法是程序会问一个 yes/no 问题,用户会输入 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
以便在需要时可以再次使用该功能。
strcpy()
复制一个字符串到一个字符数组中。相反,您需要使用 strcmp()
来 比较 两个数组。你这样做:
if (strcmp(yn, "yes") == 0)
另请注意,您需要声明 char yn[4]
以允许终止 NULL 字符。
或者,您可以使用 std::string
而不是数组,然后将字符串与 ==
:
进行比较
if (yn == "yes")
我是 C++ 的初学者,我正在尝试制作一个可以在以后的程序中使用的决策函数。
这个想法是程序会问一个 yes/no 问题,用户会输入 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
以便在需要时可以再次使用该功能。
strcpy()
复制一个字符串到一个字符数组中。相反,您需要使用 strcmp()
来 比较 两个数组。你这样做:
if (strcmp(yn, "yes") == 0)
另请注意,您需要声明 char yn[4]
以允许终止 NULL 字符。
或者,您可以使用 std::string
而不是数组,然后将字符串与 ==
:
if (yn == "yes")