如何让这个程序读取人物输入的字符串,看看字符串是否相等?

时间:2014-01-04 04:35:21

标签: c++

我需要帮助...如何让这个程序读取人物类型为字符串并查看字符串是否相等?

        #include <iostream>
        using namespace std;

        int main()
        {
            char name;
            cout << "Type my name is:";
            cin >> name;
            if
               name ==char('Mike') //this is where i think the problem is...
                cout << "congrats";
            else
            cout << "Try again";
        }

5 个答案:

答案 0 :(得分:1)

您是否尝试过在c ++中使用std :: string?

    #include <iostream>
    #include <string>
    using namespace std;

    int main()
    {
        string name;
        cout << "Type my name is:";
        cin >> name;
        if (name == "Mike"))
            cout << "congrats";
        else
            cout << "Try again";
    }

答案 1 :(得分:1)

#include <iostream>

int main()
{
    std::string name;
    std::cout << "Type my name is:";
    std::cin >> name;
    if (name == "Mike") // Compare directly to the string "Mike"...
        std::cout << "congrats";
    else
        std::cout << "Try again";
}

我认为使用std::代替using namespace std总是更好的习惯。

答案 2 :(得分:1)

您的问题是char是字符变量,而不是字符数组。如果要创建“c-string”(字符集合),请使用char name[20]。要创建字符串对象,请使用string name。不要忘记#include <string>。这是一个简短的字符串教程: http://www.cplusplus.com/doc/tutorial/ntcs/

如果要使用c字符串,则必须使用strcmp(name,"Mike")来比较两个字符串。如果两个字符串不同,则返回true,所以要小心。

#include <iostream>
using namespace std;

int main()
{
    char name[20];
    cout << "Type my name is:";
    cin >> name;
    if (!strcmp(name,"Mike")) //C string equality tester
        cout << "congrats";
    else
        cout << "Try again";
}

字符串更容易使用,因为您可以使用等于运算符==

#include <iostream>
#include <string>
using namespace std;

int main()
{
    string name;
    cout << "Type my name is:";
    cin >> name;
    if (name == "Mike") //Tests for equality using strings
        cout << "congrats";
    else
        cout << "Try again";
}

另外,请注意您的引号。单引号('a')用于字符,双引号("Mike")用于字符数组(单词,句子等)

答案 3 :(得分:0)

int main()
{
  string name;
  string myname("Mike");
  cout << "Type my name is:";
  cin >> name;
  if(name ==myname) //this is where i think the problem is...
  { 
    cout << "congrats";
  }
  else
    cout << "Try again";
}

这应该这样做。但我相信你不想只为硬编码“迈克”。一个很好的改进是从文件中获取名称然后进行比较。另请注意,string ==运算符区分大小写,因此“Mike”!=“mike”

答案 4 :(得分:0)

char是一个字符,将所有char替换为std::string,并将#include <string>添加到代码的开头。 std::string将保存任意长度的字符串。

if之后是大括号:if(...)。在您的情况下if(name == char('Mike'))或上述if(name == std::string('Mike'))的建议。

在C和C ++中,两个引号'"是不同的。您可以将'用于单个字符,将"用于字符串。所以需要if(name == std::string("Mike"))

您也可以写if(name == "Mike")

此外,您应该使用括号来提高可读性并避免错误。在if(...)之后,如果满足{}中的条件,您通常会使用if(...)来封装要执行的指令。您的情况很特殊,因为可以省略括号以获得单个指令。

if(...)
{
    ...
}
else
{
    ...
}