我遇到一个问题,一个简单的函数在到达 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/