cin投掷错误消息

时间:2014-03-06 20:17:35

标签: c++ macos g++ cin

我遇到了另一个程序的问题。它是这样的:

if(n < 15000)
{
    printf("I am < 15000");
return 0;
}
else if(n > 19000)
{
    printf("I am > 19000");
    return 0;
}
else if(n > 51000)
{
    printf("I am > 51000");
    return 0;
}

如果n高于51000,那么它仍会返回“我是> 19000”。我想我需要通过使用else if(n > 19000 && n < 51000)来“缩小差距”所以为了测试这个我编写了这个程序:

#include <iostream>
int main()
{
    printf("Please enter a #: ");
    int block;
    cin >> n;
    if(n <= 10 )
    {
        printf("I am <= 10");
        return 0;
    }
    else if(n <= 15000)
    {
        printf("I am <= 15000");
        return 0;
    }
    else if(n > 15000 && n <= 19000)
    {
        printf("I am > 15000 and <= 19000");
        return 0;
    }
    else if(n > 19000)
    {
        printf("I am > 19000");
        return 0;
    }
    else if(n > 51000)
    {
        printf("I am > 51000");
        return 0;
    }
}

尝试编译这个给了我这个错误:“错误:'cin'未在此范围内声明” 我正在使用g++ <filename>在mac osx 10.7上编译

3 个答案:

答案 0 :(得分:1)

通过

#include <iostream>

您在命名空间std中包含符号,因此要访问标准输入流,您必须编写:

std::cin

答案 1 :(得分:1)

使用C ++标准输入/输出流或使用C标准输入/输出流。混合它们是一个坏主意。

所有标准名称空间std

都包含极少数例外的标准声明

所以而不是

cin >> n;

你应该写

std::cin >> n;

或者在使用cin之前放置以下指令

using std::cin;
//,,,
cin >> n;

此外,您应该包含标头<cstdio>,其中声明了函数printf

考虑这种情况

else if(n > 19000)

无效,因为它包含所有大于10000的数字,包括大于51000的数字

我会按以下方式编写程序

#include <iostream>

int main()
{
    std::cout << "Please enter a #: ";
    int block;
    std::cin >> n;

    if ( n <= 10 )
    {
        std::cout << "I am <= 10";
    }
    else if ( n <= 15000 )
    {
        std::cout << "I am <= 15000";
    }
    else if ( n <= 19000)
    {
        std::cout << "I am > 15000 and <= 19000";
    }
    else if ( n > 19000 && n <= 51000 )
    {
        std::cout << "I am > 19000";
    }
    else if ( n > 51000 )
    {
        std::cout << "I am > 51000";
    }

    std::cout << std::endl; 
}

答案 2 :(得分:0)

也许std::cin >> n会有所帮助?看起来像是我的命名空间问题。