C++循环,直到输入特定的字符
C++ looping until a specific character is entered
我正在使用的书中的一个练习练习(重述关于各种循环的章节)指示我创建一个程序,不断要求用户输入单个字符。有两种规格:
- 当输入"$"字符时,程序应终止
- 程序应记录输入的周期数,并在程序终止时输出总数。基本上,整个想法是循环输入提示->计数周期->显示此计数,然后在输入"$"时终止程序
这是我的代码:
// Takes character input, tallies periods, stops on dollar sign
#include <iostream>
using namespace std;
int main() {
char i; // input received
int j = 0; // counter for # of periods
cout << "This program will accept single-character entries and report the number of periods you've entered.n";
for (;;) {
do {
cout << "Please enter a single character, using $ to stop: ";
cin >> i;
if(i == '.')
j++;
} while(i != '$');
if(i == '$')
cout << "Total number of periods entered is " << j << " .";
break;
}
return 0;
}
程序运行良好,代码对我来说很有效,如果我错了,请纠正我。我觉得奇怪的是,在大多数代码中使用了无限for{}循环。本章使用了一两次,所以这是我目前所知的以这种方式生成循环函数的唯一方法。
也许这只是我对该语言缺乏经验,但使用带有(;;)
的循环在C++中是一种典型的情况吗没有定义参数的循环的语法似乎对我需要做的事情有意义,但整个for(;;){}块对我来说仍然很奇怪。
不需要外循环或内循环后的if
检查。
我也会在阅读时检查错误或EOF,因此会对其进行如下编码:
int periods;
char ch;
std::cout << "Please enter a single character, using $ to stop: ";
for (periods = 0; std::cin >> ch && ch != '$'; )
{
if (ch == '.')
periods++;
std::cout << "Please enter a single character, using $ to stop: ";
}
std::cout << "Total number of periods entered is " << periods << " .";
for (;;)
或其他类似while (1)
的用法,我几乎只在书籍或代码示例片段中看到过。虽然我从未在成熟的程序中见过这种情况,但它可能只是不那么常见。不过,通常情况下,循环中至少有一个表达式(有时更多)。虽然只使用breaks
是可能的,但它会影响可读性。考虑以下内容:
for (;;){
// do some stuff here
if (anexpression) break;
}
和
do {
// do some stuff here
} while (anexpression);
哪一个可读性更强?我更喜欢后者,但这仍然只是一种意见。还有许多其他写循环的方法:
evaluateinput:
if (anexpression) goto evaluateinput;
Forever循环在电子产品中更常见。有时主甚至看起来像这样:
void main()
{
Init();
while (1);
}
在这种情况下,主函数等待处理中断。
通常我们不会使用永久循环,但这并不是一个糟糕的决定,只是不是解决问题的标准方法。
让我们说代码看起来:
while (1)
{
...
if (condition)
break;
}
我们可以更改为:
while (!condition)
{
...
}
在我们需要运行循环至少一次的情况下,我们可以使用do while循环。
相关文章:
- 如何忽略第一个字符输入后的所有内容
- 使用单个变量对字符输入进行计数
- 确定用户字符输入 C++ 的结束
- 将单个字符串/字符输入串行监视器
- 如何将字符输入限制为仅获取一个字符串"cin"
- C++:使用 fgets() 读取字符输入时出错
- 如何拒绝 cin 中的字符输入并定义最小和最大整数值
- C++ 字符输入仅输出第一个字母
- 限制 2D 数组中的字符输入
- 循环直到整数输入在所需范围内无法处理非数字字符输入
- C++常量字符*输入
- 使用带符号字符输入的isalnum-Visual C++
- 限制C++中的字符输入
- 字符输入问题
- 字符** + 输入" "字符
- 文件 I/O 操作 - 奇怪的字符输入
- 如何在不暂停循环的情况下使用字符输入停止循环
- C++ - 对'if'语句使用特定字符输入
- 使用 "NEW" 获取字符输入和给定输出,并从用户那里获取字符串长度
- 正确的逐个字符输入