【发布时间】:2019-02-09 10:31:50
【问题描述】:
我正在学习 C++ 课程,有人要求我使用 getline 计算圆的面积。我被建议不要使用cin,除非真的有必要。
下面是我的代码..
#include <iostream>
#include <string>
int main()
{
std::string question ("Enter the radius: ");
std::string s_radius;
std::cout << question;
getline(std::cin, s_radius);
const double PI = 3.14159;
double n_radius = std::stod(s_radius);
double area = PI * n_radius * n_radius;
std::cout << "The area of the circle = " << area << std::endl;
return 0;
}
真的有必要通过接受字符串作为输入并将其转换为数字来执行计算的过程吗?
【问题讨论】:
-
如何获取输入以及对输入进行的计算是正交问题。使用
cin通常更容易,有时更容易使用getline,这取决于输入的格式。但是,“除非真的有必要,否则不要使用 cin”我以前从未听说过 -
@Carcigenicate 无论您使用
std::cin >>还是getline,您都可以忽略错误,但这并没有真正使它们与众不同 -
一定有什么误解——你还在使用
std::cin。 (如果不使用std::cin,从标准输入中读取并不容易。)如果要求您使用getline读取输入,则无法绕过转换。 -
在切线上:数字是一个符号——即某种字符串——而不是数字。 “12”和“XII”都是代表数字十二的数字。文字数值,如
3.14159和0,是数字。另一方面,PI和n_radius的值不是。