4

以下は私が思いついたコードであり、正直なところ、今夜はコーディングの最初の試みです。ifただし、ステートメントを正しく機能させることができないようです。Westley、westley、または(space)Westleyと入力しても、単に他の場所にジャンプします。

プログラムでチームメンバーの名前を受け入れられるようにしたいのですが、自分の名前が機能するようになり、後で残りの名前を追加できると思いました。どんな考えや助けも素晴らしいでしょう。また、補足として、それが他の場所に戻った場合は、それについての考えを最初に戻すために、ループしようとしていましたか?ありがとうございました

#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

strcmpこれは C++ であり、文字列比較に使用する必要がある文字列ではなく、char 配列を使用しています

あなたはこれを次のようにすることができます

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
if (membername == Westley)

2 つのポインターの値のみを比較します。

于 2011-09-28T09:01:02.263 に答える
0

使用している == 演算子は、文字列のアドレスを比較します。2 つの C 文字列を比較するには、strcmp関数 from <cstring>( string.h) を使用します。C++ ではstd::string、== 演算子を使用して直感的に比較できるクラス テンプレートを使用する必要があります。

于 2011-09-28T08:49:19.867 に答える
0

まず第一に、C++ でコーディングしている場合は、std::string代わりにchar []. 2 つの文字列を比較できるという便利さがあります (残念ながら、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 に答える