不理解连续数字之间的空格代码

Do not understand code to space between consecutive digits

本文关键字:空格 代码 之间 连续 数字 不理解      更新时间:2023-10-16

当我处理一个问题时,说明给定任何正整数,我需要设计一个程序,以便它在 2 个连续数字之间创建一个空格。2小时无济于事,我决定在线谷歌以获得一些提示。我获得了以下代码,它运行良好。但是,我不明白代码是如何工作的,尤其是 if。如果输入12345,我看不出如何满足条件.

int main()
{
char b; //stores the digit
cin >> b; //get single character from user input
while (b != '') //while not at null terminator from user pressing enter
{
if (b >= '0' && b <= '9') //if entered character is a digit
{
cout << b << " "; //print character with a space
}
cin >> b; //get next character to check if it is null terminator or another digit
}
}

当用户键入任何内容时,程序会将其存储在缓冲区中(将缓冲区视为计算机访问的字符串)。

当程序到达cin >> b;时,它会检查缓冲区。由于用户尚未键入任何内容,因此缓冲区为空。因此,程序等待用户键入某些内容。 用户键入12345[enter]。这被放入缓冲区中,cin 使用缓冲区填充cin >> b;

这是做什么的?b是一个字符,一个 ASCII 字符。所以b需要一个字符,cin缓冲区中提供了第一个字符,这里是1。 (2345[enter]留在缓冲区中)。

然后程序评估条件(b >= '0' && b <= '9').这里重要的是要看到'1''9'不是int,他们也是角色!因此,程序比较这些字符的数值,碰巧所有数字字符都按顺序放置,中间没有其他字符。因此,如果b包含数字字符,则条件为真,因此我们可以打印带有以下空格的b。 然后,程序将请求缓冲区中的下一个字符,在我们的示例中'2'。因此b只会逐个检查字符,而不是一次检查所有条目!

程序如何停止?如注释中所述,while 循环在b= ''时结束。''是一个特殊字符,一个空终止符,用于字符串的结尾。因此,当 while 循环到达用户输入的末尾时,此程序结束。

当您在字符编译器中输入 integer>9 时,会将其存储为字符串。

如果在代码中删除第二个CIN程序进入无限循环并继续打印第一个整数。

第二个 CIN 从 B 中获取下一个数值并打印出来。 打印最后一个整数时,缓冲区为空并等待用户输入数字