【发布时间】:2018-04-13 02:58:40
【问题描述】:
很抱歉,我无法为这个问题找到更好的标题。我正在关注 Stroustrup 的编程:使用 C++ 的原则和实践。这个示例代码引起了我的注意。我的问题是,cin 如何在一个单词中识别两种不同的类型,例如 200.40i(200.40 double 和 i char)?我的意思是,它不应该期待至少一个空格分隔的输入吗?
int main()
{
constexpr double cm_per_inch = 2.54;
double length = 1;
char unit = 0;
cout << "Please enter a length followed by a unit (c or i):\n";
cin >> length >> unit;
if (unit == 'i')
cout << length << "in == " << cm_per_inch*length << "cm\n";
else
cout << length << "cm == " << length/cm_per_inch << "in\n";
}
如果我只是运行程序并输入:200.40i 工作正常,同样适用于:200.40 i 和:200.40 \n i。
【问题讨论】:
-
i不能以>>将解析的double的任何表示形式出现在那里,因此它知道double在那里结束。不过,它真的很脆弱——尝试用e替换i。流输入需要大量的错误检查。
标签: c++