栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C++

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C++

C++_Study_Day2 基于范围的for循环(C++11)

该循环可以自动为数组中的每个元素迭代一次

//格式
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 循环来修改数组的内容,除非将范围变量声明为一个引用。引用变量是其他值的一个别名,任何对于引用变量的修改都将实际作用于别名所代表的值。

要将范围变量声明为引用变量,可以在循环头的范围变量名称前面添加一个 & 符号。

//它使用了基于范围的 for 循环来将用户输入的数据存储到一个数组中。
//This program uses a range-based for loop
//to modify the contents of an array.
#include 
using 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对象支持3种不同模式的单字符输入,其用户接口各不相同。

使用原始的cin进行输入

选择某个特殊字符——哨兵字符,将其作为停止标记。

#include
int 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。

#include
int 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()版本。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/780060.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号