如果声明不会cout并且没有错误,(根据Xcode

时间:2013-07-01 16:34:28

标签: c++ if-statement

一旦程序进入if语句,它就会忽略它并停止。 Xcode说没有错误,所以我不知道发生了什么。

#include <iostream>
#include <string>

int main()
{
    std::string team;
    std::cout << "Welcome to The Baseball game!\n" << std::endl;
    std::cout << "choose a team.\n";
    std::cin >> team;

    if (team == "Arizona Diamondbacks") //this is were it stops working
    {
        std::cout << "You chose the Arizona Diamondbacks, here is your lineup:" << std::endl << "1. RF Gerrardo Parra" << std::endl << "2. 2B Willie Bloomquist" << std::endl << "3. 1B Paul Goldschmidt" << std::endl << "4. C Miguel Montero" << std::endl << "5. LF Jason Kubel" << std::endl << "6. CF A.J. Pollock" << std::endl << "7. SS Didi Gregorius" << std::endl << "8. 3B Cliff Pennington" << std::endl << "9. SP Patrick Corbin" << std::endl << "your starting pitcher will be Patrick Corbin.\n";
    }
    if (team == "Atlanta Braves")
    {
        std::cout << "you chose the Atlanta Braves";
    }
    return 0;
}

3 个答案:

答案 0 :(得分:2)

std::cin >> team;

这只读一个字。如果您输入“Arizona Diamondbacks”,team将设置为"Arizona"。您可以使用getline来阅读整行输入:

std::getline(std::cin, team);

答案 1 :(得分:2)

ifstream的{​​{1}}提取运算符>>提取以空格分隔的字符串。所以你的std::string停在用户输入的第一个空格/标签处。您需要使用一个读取整行的函数。

答案 2 :(得分:1)

我认为您使用cin >> team;来获取字符串输入的问题。尝试使用 getline

当空格字符出现时,

cin 会停止输入。