Как мне заставить эту программу читать, что человек вводит как строку, и видеть, равны ли строки?

0

Мне нужна помощь... Как получить эту программу для чтения того, что тип человека является строкой, и посмотреть, равны ли строки?

        #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";
        }
  • 0
    Ой, это действительно неудачный допустимый синтаксис (или это было бы так, if бы if имел квадратные скобки, и фигурные скобки тоже помогли бы). Просто используйте std::string и сравните его, как и все остальное.
Теги:

5 ответов

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.

1

Вы пытались использовать std :: string в c++?

    #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";
    }
  • 0
    @ Набла Хороший улов :) спасибо!
1

Ваша проблема в том, что char - это символьная переменная, а не массив символов. Если вы хотите создать "c-строку" (набор символов), используйте 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") предназначены для массивов символов (слов, предложений и т.д.),

  • 2
    Это не обязательно возвращает true . Возвращает число больше нуля или меньше нуля, если первая строка больше или меньше, соответственно, чем вторая. Строки C ++, кроме того, что они более просты в использовании, также не открывают программу для переполнения буфера, когда пользователь вводит более 20 символов.
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
{
    ...
}
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 == чувствителен к регистру, поэтому "Майк"! = "Майк"

Ещё вопросы

Сообщество Overcoder
Наверх
Меню