C++学习一(主要对cin的理解)

cpp 复制代码
#include<iostream>
int main()
{
	
	int sum = 0, value = 0;
	//读取数据直到遇到文件尾,计算所有读入的值的和
	while (std::cin >> value)
	{   //等价于sum=sum+value
		sum += value;
	}
	std::cout << "Sum is :" << sum << std::endl;
	sum = 0;
	for (int i = -100; i <= 100; ++i)
	{
		sum += i;
	}
	std::cout << sum << std::endl;
	
	下面这个程序当我们执行的时候
	注意cin输入的理解
	c++学习不要记得C语言的习惯,不然很容易搞错
	//currVal是我们正在统计的数,我们将读入的新值存入val
	int currVal = 0, val = 0;
	//读入第一个数,并确保确实有数据可以处理
	if (std::cin >> currVal) {
		int cnt = 1;
		while (std::cin >> val) {
			if (val == currVal)
				++cnt;
			else {
				std::cout << currVal << " occurs " << cnt << " times" << std::endl;
				currVal = val;
				cnt = 1;
			}
		}
		//记住打印文件中最后一个值的个数
		std::cout << currVal << " occurs " << cnt << " times" << std::endl;
		return 0;
	}


	return 0;
}

在理解 cin 功能时,不得不提标准输入缓冲区。当我们从键盘输入字符串的时候需要敲一下回车键才能够将这个字符串送入到缓冲区中,那么敲入的这个回车键(\r)会被转换为一个换行符(\n),这个换行符也会被存储在 cin 的缓冲区中并且被当成一个字符来计算!比如我们在键盘上敲下了 123456 这个字符串,然后敲一下回车键(\r)将这个字符串送入了缓冲区中,那么此时缓冲区中的字节个数是 7 ,而不是 6。

初学,好好理解一下这段代码

相关推荐
橘色的喵1 分钟前
嵌入式 Telnet 调试 Shell 重构: 纯 POSIX 轻量化实现
c++
橘色的喵1 分钟前
ztask: 一个C++14编写的、 类型安全、RAII 与模板化任务调度器
c++
小龙报14 分钟前
【51单片机】不止是调光!51 单片机 PWM 实战:呼吸灯 + 直流电机正反转 + 转速控制
数据结构·c++·stm32·单片机·嵌入式硬件·物联网·51单片机
彩妙不是菜喵17 分钟前
C++:深入浅出讲解=>多态
开发语言·c++
烤麻辣烫23 分钟前
正则表达式快速掌握
前端·javascript·学习·正则表达式·html
lightqjx1 小时前
【C++】C++11 - Lambda表达式+包装器
开发语言·c++·c++11·lambda·包装器
载数而行5201 小时前
算法系列1之最小生成树
c语言·数据结构·c++·算法·贪心算法
额,不知道写啥。1 小时前
HAO的DP
c++·算法·深度优先·动态规划
我命由我123452 小时前
C++ EasyX 开发,MessageBox 函数参数问题:“const char *“ 类型的实参与 “LPCWSTR“ 类型的形参不兼容
c语言·开发语言·c++·后端·学习·visualstudio·visual studio
Trouvaille ~2 小时前
【Linux】高并发服务器的起点:五种 IO 模型与非阻塞 IO 本质解析
linux·运维·服务器·c++·操作系统·io模型·同步异步