该循环可以自动为数组中的每个元素迭代一次
//格式
for (dataType rangeVariable : array)
statement;
格式的各个部分:
dataType:是范围变量的数据类型。它必须与数组元素的数据类型一样,或者是数组元素可以自动转换过来的类型。rangeVariable:是范围变量的名称。该变量将在循环迭代期间接收不同数组元素的值。在第一次循环迭代期间,它接收的是第一个元素的值;在第二次循环迭代期间,它接收的是第二个元素的值;以此类推。array:是要让该循环进行处理的数组的名称。该循环将对数组中的每个元素迭代一次。statement:是在每次循环迭代期间要执行的语句。要在循环中执行更多的语句,则可以使用一组大括号来包围多个语句。 基于范围的for循环来显示数组内容
//例如:
int numbers[] = {3, 6, 9};
for(int val : numbers)
{
cout << "The next value is ";
cout << val << endl;
}
因为 numbers 数组有 3 个元素,所以该循环将迭代 3 次。第一次它迭代时,val 变量将接收 numbers[0] 中的值;在第二次循环迭代期间,它将接收 numbers[1] 的值;在第三次循环迭代期间,它将接收 numbers[2] 的值。
输出结果:
The next value is 3
The next value is 6
The next value is 9
当基于范围的 for 循环执行时,==其范围变量将仅包含一个数组元素的副本。==因此,不能使用基于范围的 for 循环来修改数组的内容,除非将范围变量声明为一个引用。引用变量是其他值的一个别名,任何对于引用变量的修改都将实际作用于别名所代表的值。
要将范围变量声明为引用变量,可以在循环头的范围变量名称前面添加一个 & 符号。
//它使用了基于范围的 for 循环来将用户输入的数据存储到一个数组中。 //This program uses a range-based for loop //to modify the contents of an array. #includeusing namespace std; int main () { const int SIZE = 5; int numbers[SIZE]; //Get values for the array. for (int &val : numbers) { cout << "Enter an integer value: "; cin >> val; } // Display the values in the array. cout << "nHere are the values you entered: n"; for (int val : numbers) cout << val << " "; cout << endl; return 0; } //输出结果 Enter an integer value: 10 Enter an integer value: 20 Enter an integer value: 30 Enter an integer value: 40 Enter an integer value: 50 Here are the values you entered: 10 20 30 40 50
请注意范围变量 val,在它的名称前面有一个 & 符号,这表示它被声明为引用变量。当循环执行时,val 变量将不再只是数组元素的副本,而是变成了元素本身的别名。因此,对 val 变量作出的任何修改都会实际作用于它当前引用的数组元素。
相比之下,第 20 行中的变量名前面就没有 & 符号,这是因为在此无须将 val 声明为引用变量。该循环只是要显示数组元素,而不是改变它们。
循环和文本输入使用原始的cin进行输入事实上,cin对象支持3种不同模式的单字符输入,其用户接口各不相同。
选择某个特殊字符——哨兵字符,将其作为停止标记。
#includeint main() { using namespace std; char ch; int count = 0; cout<<"Enter characters;enter # to quit:n"; cin>>ch; while(ch!='#') { cout< >ch; } cout< cin输入字符会自动忽略空格和换行符
发送给cin的字符会被缓冲,直到用户按下回车键之后,整个字符序列才会发送给程序
使用cin.get(char)进行补救cin类(在iostream中定义)中包含一个成员函数cin.get(ch),它可以读取输入中的下一个字符(即使它是空格),并将其赋给变量ch。
#includeint main() { using namespace std; char ch; int count = 0; cout<<"Enter characters;enter # to quit:n"; cin.get(ch); while(ch!='#') { cout< 引用是C++在C语言基础上新增的一种类型。头文件iostream将cin.get(ch)的参数声明为引用类型,因此该函数可以修改其参数的值。
使用哪一个cin.get()有这样一段代码:
char name[Size]; ... cout<<"Enter your name:n"; cin.get(name,Size).get(); //最后一行等价于两个连续的函数调用: cin.get(name,Size); cin.get;函数重载允许创建多个同名函数,条件是它们的参数列表不同。
例如,如果在C++中使用cin.get(name,Size); 则编译器将找到char*和int作为参数的cin.get()版本。
如果使用cin.get(ch); 则编译器将使用接受一个char参数的cin.get()版本。



