c++ - 新手与 std::cin 作斗争

标签 c++ cin

我遇到一个问题,一个简单的函数在到达 std::cin 请求时似乎终止。编译器不会抛出任何警告或错误,也不会发生运行时错误,程序只是退回到主菜单。

片段:

#include <iostream>
#include <math.h>

using namespace std;

void circle()
{
    float radius = 0.0f, diameter = 0.0f, circumference = 0.0f, area = 0.0f;
    const float pi = 3.14f;

    cout << "Enter radius." << endl;
    cin >> radius;
    cout << "Radius: " << radius << endl;
    cout << "Diameter: " << 2*radius << endl;
    cout << "Cirumference: " << 2*pi*radius << endl;
    cout << "Area: " << pi * pow(radius, 2) << endl;
}

该函数从 main() 调用,并在屏幕上出现“Enter radius”时成功调用,但不请求输入,并跳过最后 4 条语句。然后程序简单地返回到 main()。

cin 也没有错误(并且在 main() 函数中运行时继续工作),所以我不认为它只是简单地读取流中的坏字符。

我只是不明白为什么 Circle() 意外退出。

最佳答案

当我尝试在 Windows XP 上使用 Visual Studio 2010 运行您的代码时,它在我的计算机上执行相同的操作。

我设法通过在 main 中调用 circle() 之后放置 getchar(); 来解决这个问题。

不知道为什么会发生这种情况,希望有人能提供更多线索。

**编辑:

当然它会退出,因为它会运行到 main 的末尾,从而退出应用程序。

关于c++ - 新手与 std::cin 作斗争,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11011988/

相关文章:

c++ - cin 用于未知数量的对象?

javascript - Websocket 握手 Sec-WebSocket-Accept header 值不正确

C++ boost compilation 灾难

c++ - 将 boost::lambda::bind 的返回值赋给对象?

c++ - 确定cin中给出了多少个字符?

c++ - 如何让用户输入一个或两个输入?

c++ - 在 while 循环的第二次迭代中跳过 Cin

c++ - 你如何使 cin 类型安全?

c++ - 不支持外部调用 - CUDA

c++ - G++编译,mac os和ubuntu的区别