不理解连续数字之间的空格代码
Do not understand code to space between consecutive digits
当我处理一个问题时,说明给定任何正整数,我需要设计一个程序,以便它在 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 中获取下一个数值并打印出来。 打印最后一个整数时,缓冲区为空并等待用户输入数字
- 2D数组来自文本输入,中间有空格
- C++我的数学有什么问题,为什么我的代码不能正确循环
- 代码在main()中运行,但在函数中出现错误
- 在VS代码中交叉编译Windows与Linux上的MinGW的SDL程序
- 编译包含字符串的代码时遇到问题
- 我在c++代码中生成了一个运行时#3异常
- 如何在linux终端中同时编译和运行c++代码
- 为cl.exe(Visual Studio代码)指定命令行C++版本
- 在Linux for Windows上编译C++代码时出错
- 可视代码 删除函数括号内的空格
- 为什么EclipseCDT代码格式化程序有时会在模板参数中引入空格
- 如何在括号与代码之间添加空格以进行C++?
- 解锈化代码格式化程序删除C++单行中的空格
- 不理解连续数字之间的空格代码
- 如何修复我的代码以删除字符串中的空格
- 为什么这个 leveldb 代码会截断包含空格的"std::string"?
- 如何调试此代码以按空格将数组拆分
- 如何删除此代码输出的结束空格
- 编译器如何知道在此代码中的空格之后继续
- 为什么字符串中的空格使我的代码无限循环