当前位置: 首页 > article >正文

C++算法基础笔记

算法学习

  • C++语法
      • 字符和字符串输入输出
        • 输出控制
      • 字符串拼接和扩充
      • 检查字符串是否存在大写、小写字母
      • 字符数组
      • 换行

C++语法

字符和字符串输入输出

在C++ 中使用如下语法实现对容器中的对象进行遍历,类似于js或python的for in语法

for (element_declaration : container)
#include <iostream>
#include <string>

using namespace std;

int main() {
    string inputStr;

    // 输入字符串
    cout << "请输入一个字符串:";
    cin >> inputStr;

    // 输出整个字符串
    cout << "您输入的字符串是:" << inputStr << endl;

    // 挨个输出字符串中的字符
    cout << "字符串中的每个字符是:" << endl;
    for (char ch : inputStr) {
        cout << ch << endl;
    }

    return 0;
}

输出控制

printf(“%02d”,n%100) ,//输出模100的值,若十位有0则保留
%:表示开始一个格式说明符。
0:表示如果整数的位数不足,前面将用 0 来填充,而不是空格或其他字符。
2:表示整数至少应该占用2位宽。如果整数的位数不足2位,前面将用 0 来填充。
d:表示要输出的是一个十进制整数。

字符串拼接和扩充

string str1 = "Hello";
    string str2 = "World";

    // 拼接字符串
    string result = str1 + " " + str2; // 使用 + 运算符,直接拼接两个字符串或字符串与字面量
    cout << "拼接后的字符串是:" << result << endl; //得到result:Hello World

    // 使用 append 方法
    str1.append(" ").append(str2); // 在 str1 后直接拼接
    cout << "使用 append 拼接后的字符串是:" << str1 << endl;//得到str1:Hello World

检查字符串是否存在大写、小写字母

for (char c : str) {
if (isupper(c)) { // 检查是否为大写字母}//遍历字符串中的每一个字符,进行检查是否为大小写
if (islower(c)) { // 检查是否为小写字母}}

字符数组

字符数组的输入
cin >> charArray 会直接将用户输入存储到字符数组中,并自动在字符串末尾添加结束符 \0(C 风格字符串的特点)。
输入时以空格或换行作为终止符,如果需要支持包含空格的字符串,可以改用 cin.getline()。

const int size = 100; // 定义字符数组的最大大小
    char charArray[size];

    // 输入字符数组
    cout << "请输入一个字符串:";
    cin >> charArray; // 直接将输入存储到字符数组中(以空格或换行结束)

逐个输出字符
使用 for 循环,遍历字符数组中的每个元素。
遍历条件是 charArray[i] != ‘\0’,因为 \0 是字符串的结束符。

 // 输出字符数组的每个元素
    cout << "字符串中的每个字符是:" << endl;
    for (int i = 0; charArray[i] != '\0'; ++i) { // 遍历到字符串结束符 '\0'
        cout << charArray[i] << endl;
    }

字符串截取
输出字符数组中n位到m的字符组成的字符串substr(截取开始位,截取末位)

  return input.substr(n, m - n + 1); // 使用 substr 提取指定范围字符,input为某字符串
    string result = substringFromTo(input, n, m);//result即为一个目标字符串

字符数组截取

截取字符数组charArray中从第n位到第m位的字符组成的字符串

// 使用 string 构造函数提取指定范围字符
char charArray[] = {'a', 'b', 'c', 'd', 'e', 'f', 'g'};
    return string(charArray + n, charArray + m + 1);//返回从n位到m位组成的字符串

换行

endl 与 \n 的对比
endl 与 \n 都可以实现换行,但有区别:
endl:cout << charArray[i] << endl;
换行并刷新缓冲区。
用于需要实时输出的场景。
开销略大,因为刷新缓冲区会降低程序性能。
\n:cout << "Hello\n"; // 仅换行
仅换行,不刷新缓冲区。
性能较高,适合连续输出大量数据的场景


http://www.kler.cn/a/559862.html

相关文章:

  • 2025-spring boot 之多数据源管理
  • 未授权理论知识记录
  • 【Web前端开发精品课 HTML CSS JavaScript基础教程】第二十六章课后题答案
  • 爬虫与反爬-Ja3指纹风控(Just a moment...)处理方案及参数说明
  • 39、深度学习-自学之路-自己搭建深度学习框架-3、自动梯度计算改进,并且进行了每一段代码的注释,方便理解程序的运行过程
  • 一篇docker从入门到精通
  • C#快速幂算法
  • 【玩转 Postman 接口测试与开发2_020】(完结篇)DIY 实战:随书示例 API 项目本地部署保姆级搭建教程(含完整调试过程)
  • 服务器系统都更新到windowsserver2025了
  • echarts找不到了?echarts社区最新地址
  • 深度学习每周学习总结Y1(Yolov5 调用官方权重进行检测 )
  • 电池管理系统(BMS)架构详细解析:原理与器件选型指南
  • C# 将非托管Dll嵌入exe中(一种实现方法)
  • 交通物联网:概念、历史、现状与展望
  • 使用 Power Automate 转换 HTML to PDF
  • 内外网隔离文件传输解决方案|系统与钉钉集成+等保合规,安全提升70%
  • 通俗理解Test time Scaling Law、RL Scaling Law和预训练Scaling Law
  • 【零基础实战】STM32控制DRV8833电机驱动详解
  • LLaMA中的微调方法
  • STM32的HAL库开发---ADC采集内部温度传感器