C++ 学习笔记(一)

1|0常用头文件

#include <iostream> // 输入输出流 #include <algorithm> // 常用算法函数 #include <vector> // 容器 #include <string> // 可变长字符序列 #include <stack> // 栈 #include <queue> // 队列 #include <map> // 键值对 #include <set> // 集合 #include <math.h> // 常用数学函数
  • 常用算法的函数(方法)有:sort、equal、swab、min、max

  • vector可以当作数组使用,想制造二维数组就是 容器套容器

2|0输入与输出

输入:cin、scanf、getchar、getline

输出:cout、printf

以下示例代码中的变量定义如下:

int i = 10; int j = 20; char ch = 'h'; string s;

2|1输入

// cin cin >> i >> j; // scanf scanf("%d %d", &i, &j); // 注意此处对变量的处理与 printf 的区别 // 若输入数据时,需要以逗号为间隔,则不建议使用 cin,应使用 scanf scanf("%d, %d", &i, &j); // 输入字符 ch = getchar(); // 输入字符串 getline(cin, s);

getline 与 getchar 细节分析

getline、getchar 都会把 空格 和 回车 当作字符输入

不同的是:

  • getchar 不会把末尾的回车吃掉,将回车留在 输入流 中
  • getline 把回车当作结束符,这个回车不会留在 输入流 中

所以,若要在使用 getchar 后紧接着使用 getline,若不对 getchar 保留在输入流中的回车进行处理,则getline会把这个回车当作输入,从而导致错误赋值,解决方法如下:

ch = getchar(); // 正常赋值 getchar(); // 处理输入流的回车 getline(cin, s);

如示例代码所示,用getchar来处理多余的回车

cin 同样在输入流中保留回车

另外一个例子:

int i; cin >> i; ch = getchar(); // getchar 接收了这个回车,并赋值给了 ch cout << ch << endl; // ch 输出回车后,紧接着 endl 也输出回车

改进:

int i; cin >> i; // 回车留在了 输入流 中 getchar(); // 把 cin 后面多余的回车吃掉 ch = getchar(); // 又一个回车留在了 输入流 中 getchar(); // 把这个输入流中的回车 处理

scanf 同样也会在输入流中保留回车,此处省略解释

总结:

cin、getchar()、scanf() 都会把回车保留在 输入流 中

getline() 不会把回车保留在 输入流 中

所以若在输入数字或字符以后要再次输入字符串或者字符,在使用cin、getchar、scanf 时应对保留在输入流中的 回车进行处理

处理方式:getchar();

从而把输入流中的回车吃掉,也就不会影响到下一次的正常输入了

此处只是建议,具体需要看需求

2|2输出

// 输出十进制整型0 printf("%d", i); // 输出十六进制整型 printf("%x", i); // 以十六进制格式显示输出 printf("%#x", i); // 对输出数字宽度进行限制,此处的数字可以随意更改,空位默认用空格占位 printf("%4d", i); // 不希望以空格的形式占位,以 0 补位 printf("%04d", i); // 输出浮点数,默认输出6位小数 printf("%f", 10.0); // 控制保留小数的位数 printf("%.1f", 10.0); // 控制浮点数显示宽度 printf("%6f", 10.0); // 输出字符 printf("%c", ch); // 输出字符串 printf("%s\n", "hello world");

3|0变量声明、定义与初始化

// 声明一个变量 extern int i;

若对其输出,编译器会报错:undefined reference to `i'

// 声明并定义一个变量 int i;

会输出0,因未对其进行初始化,会出现警告:warning: 'i' is used uninitialized in this function

int i = 10; // 正确对变量的处理

4|0vector初体验

// 实现从1 + 2 + ... + 10 // 传统方法 int sum = 0; for(int i = 1; i < 10; i++) { sum += i; } cout << sum << endl; // 使用容器 sum = 0; vector<int> v{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; for(auto i : v) { sum += i; } cout << sum << endl;

__EOF__

本文作者在青青草原上抓羊
本文链接https://www.cnblogs.com/seansheep/p/13194162.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   SeanSiyang  阅读(181)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示