4

下面是我想出的代码,老实说今晚是我第一次尝试编码。但是,我似乎无法让我的if陈述正常工作。即使我输入 Westley 或 westley 或(空格)Westley,它也只是简单地跳转到 else。

我希望该程序能够接受我的任何团队成员的名字,但是我认为我的名字可以正常工作,然后我可以稍后添加其余的名字。任何想法或帮助都会很棒。另外作为旁注,如果它回到开头,我将尝试循环它,还有什么想法吗?谢谢

#include <iostream>
using namespace std;

int main ()
{
  char Westley[] = "Westley";
  char Alex[] = "Alex";
  char Andrea[] = "Andrea";
  char Bee[] = "Bee";
  char Gia[] = "Gia";
  char KaYeng[] = "Ka Yeng";
  char Chi[] = "Chi";
  char Corinne[] = "Corinne";
  char Joyce[] = "Joyce";
  char Parish[] = "Parish";
  char membername [80];
  cout << "Please Enter a Beta Team Members Name.\n";
  cin >> membername;
  if (membername == Westley)
  {   cout << "BETA TEAM ROSTER!!\n";
      cout << "Westley.\n";
      cout << "Alex.\n";
      cout << "Andrea.\n";
      cout << "Bee.\n";
      cout << "Gia.\n";
      cout << "Ka Yeng.\n";
      cout << "Chi.\n";
      cout << "Corinne.\n";
      cout << "Joyce.\n";
      cout << "Parish.\n";
  }
  else
      cout << "Not a Valid Beta Team Members Name!\n" << "Please Enter a Beta Team Members Name"<< endl;
cin >> membername;
  return 0;
}
4

8 回答 8

5

不要使用char[]; 用于std::string这种事情,因为它知道如何以一种有用的方式进行比较(char 数组之间的比较测试它们是否是同一个数组,而不是内容是否相同)。

于 2011-09-28T08:47:02.090 回答
4

您不能使用“==”运算符。尝试了解更多关于

strcmp

if (strcmp(membername, "Westley") == 0)
   ...
于 2011-09-28T08:46:47.780 回答
4

这是 C++ 并且您使用的是 char 数组而不是您需要strcmp用于字符串比较的字符串

你可以这样做

if(strcmp(membarname, Westley))

或者如果可能的话,您可以使用std::string而不是char[]存储字符串,那么您可以使用==运算符

你可以使用std::string如下

#include <string>
using namespace std;

int main(){
    string Westley = "Westley";

    ....

    string membername;
    cout << "Please Enter a Beta Team Members Name.\n";
    cin >> membername;
    if (membername == Westley){

        ....
    }
    ....
}
于 2011-09-28T08:47:12.167 回答
2

而不是字符数组char[];使用std::string,你会得到想要的结果。

if (membername == Westley)

因为,对于char[]数据,上面的比较结果是地址比较,而不是内容比较

于 2011-09-28T08:48:05.693 回答
1

由于它是您正在使用的数组,因此您需要使用 strmcp 代替,例如

if (!strcmp(membername, Westley) ...

因为您在 C++ 中工作,所以请使用字符串:

#include <string>

using namespace std;

string Westley = "Westley";

...然后你可以做

if (membername == Westley) ...
于 2011-09-28T08:46:26.147 回答
0

首先,如果你使用 C++ 编码,你应该使用std::string而不是char []. 它具有可以比较两个字符串的便利(可惜char []您必须调用类似strcmp或类似的函数)。

例如:

#include <iostream>
#include <string> // <-- important
using namespace std;

int main ()
{
    string Westley("Westley");
    ...

    if(membername == Westley) // now works!
    {
        ...
于 2011-09-28T08:47:52.747 回答
0

您正在使用的 == 运算符比较字符串的地址。要比较两个 C 字符串,请使用( ) 中的strcmp函数。在 C++ 中,您应该使用类模板,可以使用 == 运算符进行直观的比较。<cstring>string.hstd::string

于 2011-09-28T08:49:19.867 回答
0
if (membername == Westley)

只比较两个指针的值。

于 2011-09-28T09:01:02.263 回答