C++ Primer 学习笔记 第一章 开始

main函数的返回类型必须为int型。

一种类型不仅定义了数据元素的内容,还定义了这类数据上可以进行的运算。

IDE(Integrated Developed Environment)为集成开发环境。

根据编译器不同,常见源文件后缀有:.cc/.cxx/.cpp/.cp/.C

命令行运行源文件命令:
GNU:g++
微软Visual Studio 2010:c1

C++并未定义IO语句,其包含一个标准库提供IO机制,如iostream:

#include <iostream>

这个库包含两个基础类型:istream和ostream表示输入输出流,一个流是一个字符序列。输出时用名为cout的ostream(标准输出)类型对象,输入时用名为cin的istream(标准输入)类型对象。
还有两个ostream类型对象,分别为cerr(标准错误)和clog,前者用来输出警告和错误信息,后者用来输出程序运行一般性信息。

使用库:

#include <iostream>     // 标准库
#include "lib.h"        // 自己写的库文件

此命令出现在函数体外,其中iostream是头文件(header),#include和头文件名必须出现在同一行。

输出:

std::cout << "ssssss" << std::endl;

<<运算符左侧是一个ostream类型对象,右侧是要输出的内容。endl是操纵符,效果是结束当前行,并将与设备关联的缓冲区的内容刷到设备中,刷新操作保证目前为止程序产生的输出都真正写入输出流中,而不是仅停留在内存中等待输出流。效果为输出后换行。

在调试时常添加打印语句,这类语句应保证一直刷新输出流,否则可能程序崩溃后输出还存在缓冲区中,从而影响对程序崩溃位置的错误推断。

std是命名空间,可以避免名字定义冲突,标准库定义的所有名字都在命名空间std中。但这样做的坏处是每次使用标准库中的名字时要显式说明命名空间,::即为作用域运算符,也可以指定默认命名空间:

using namespace std;

注释:

//单行注释

/*
 *我是
 *多行
 *注释
*/
int value,sum = 0;
while(cin >> value){
    sum += value;
}

以上代码表示从标准输入读取下一个数,当我们使用一个istream对象作为条件时,效果是检测流的状态,如果流是有效的,即流未遇到错误,那么检测成功,遇到文件结束符或无效输入(如输入的值不是一个整数)时,istream对象状态变为无效,即条件为假。

以上代码中:
输入浮点数时,结果会加上浮点数的整数部分,然后循环跳出。
输入字符时,会直接得出输入字符之前输入的所有合法整数的和,然后循环跳出。

文件结束符:Windows下Ctrl+Z然后Enter或Return键。UNIX和Mac OS X下Ctrl+D。

以下代码对按顺序输入的整数值进行计数:

#include<iostream>
using namespace std;

int main(){
	int currVal,val,cnt = 1;
    if(cin >> currVal){
    	while(cin >> val){
    		if(val == currVal){
    			cnt++;
			} else {
				cout << currVal << " occurs " << cnt << " times." << endl;
				cnt = 1;
				currVal = val;
			}
		}
		cout << currVal << " occurs " << cnt << " times." << endl;
	}
	return 0;
}

其中第一个if的条件保证输入不为空,并把第一个值保存在currVal变量中。cnt统计每个数值出现的次数。用while反复从标准输入中读取下一个整数。

一个类定义了一个类型,以及与其关联的一组操作。我们需要使用头文件来访问自己定义的类,习惯上,头文件根据其中定义的类的名字来命名,通常用.h作头文件后缀,也有人习惯用.H/.hpp/.hxx。c++标准库头文件通常不带后缀。

成员函数调用方法:

Sales_item item1;  // Sales_item类型变量
item1.isbn()

点运算符只能用于类类型对象,左侧运算对象是一个类类型的对象,右侧运算对象是该类型的一个成员名。我们使用点运算符访问一个成员函数时是想调用该函数,使用调用运算符()来调用一个函数。

posted @   epiphanyy  阅读(4)  评论(0编辑  收藏  举报  
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示