gpt4 book ai didi

c++ - 什么终止将输入读入 int

转载 作者:搜寻专家 更新时间:2023-10-30 23:56:50 24 4
gpt4 key购买 nike

我正在使用这本书学习 C++:编程原则和使用 C++ 的实践。在第 3 章的末尾,作者问什么终止将输入读入 int,我认为当你输入一个空格时,就像字符串类型一样,输入到输入的读入终止但是在编写这个程序之后我有一些疑问:

constexpr double cm_per_inch = 2.54; 
double lenght = 1;

char unit = 0;
cout << "Please enter a lenght followed by a unit (c or i):\n";
cin >> lenght >> unit;

if (unit == 'i')
cout << lenght << "in == " << cm_per_inch * lenght << "cm\n";

else
cout << lenght << "cm == " << lenght / cm_per_inch << "in\n";

这里如果我输入 1i cin 会将 1 读入长度,将 i 读入单位,为什么?我不应该使用空格来终止读入 int 吗?怎么了 ?

最佳答案

cin 上的 >> 运算符知道它试图提取和解析的变量的类型。在您的情况下,只要提取的字节继续构成整数,cin 就会从标准输入中读取。一旦遇到任何非整数字符,cin 就完成读取整数。确定何时完成解析的障碍因您尝试通过 cin 上的 >> 运算符提取的变量类型而异。 num_get::get 是 cin 上的 >> 运算符在内部调用以根据预期格式解析变量。

这里是一个链接,指向关于 cin 实现的 >> 运算符的引用(它有很多细节):http://www.cplusplus.com/reference/istream/istream/operator%3E%3E/

关于c++ - 什么终止将输入读入 int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26851934/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com