从零开始学C++之数组和字符串

从零开始学C++之数组和字符串,第1张

从零开始学C++之数组字符

C++语法基础

数组

知识点题目 字符

ASCII码字符数组字符串输入输出字符串 *** 作遍历字符串字符串流题目

数组
字符串
所有题目来自ACWing


从零开始学C++系列
从零开始学C++之基本知识
从零开始学C++之数组和字符串
从零开始学C++之函数、结构体、类、指针、引用


数组 知识点

  全局变量的定义,默认值为0,存在堆空间,无长度限制,堆里虚拟分配,使用再开内存,没开的时候标记全部指向0,零页

  局部变量,默认值是随机的,存在栈空间,在栈空间中的变量会占内存

定义数组

    int a[100], b[10];
    float c[20];
    double d[10];
    char e[14];
    string g[25]; // 字符串数组 单个元素是一个字符串
    //相当于二维数组


cstring头文件中的一些函数

memset()初始化: -> 比循环赋值效率高赋值是按字节赋值,因此只有赋予-1和0时才与预期一致。其最后一个参数的单位是Byte
格式 memset(数组名, 将每个字节初始化成什么值, 初始多长(单位是Byte))
例如:memset(a, 0, sizeof a); 将数组a赋为全0memcpy()复制:格式:memcpy(目标数组名, 源数组名, 源数组Byte长度)
memcpy(b, a, sizeof a);

sizeof 可不加括号,即可这样使用sizeof a,其返回单位是Byte


题目

753. 平方矩阵 I
754. 平方矩阵 II
756. 蛇形矩阵



字符串 ASCII码

背下来

48 ~ 57 : 0 ~ 965 ~ 90 : A ~ Z97 ~ 127 : a ~ z 字符数组

字符串是字符数组加上结束符"",字符数组长度至少比字符串多1

//环境 VSCode
    char a1[] = {'B', '+', '+', ''};
    char a2[] = "C++";
    char a3[] = {'A', '+', '+'};
    char a4[] = {'C', ''};
    cout << sizeof a2 << endl; // 4
    cout << sizeof a3 << endl; // 3
    printf("%sn", a2);//输出是C++
    printf("%sn", a3); //输出是A++C++
字符串输入输出

输入
C语言

char s[N];
scanf("%s", s);          // 不能读取含空格、换行符的字符串
gets(s);                // 能读取含空格的字符串,同时自动去掉换行符n
fgets(s, N, stdin);      // 能读取含空格的字符串,但不会去掉换行符n。【注意】

  C++

#include 
string str;
cin >> str;             // 能读取含空格、不能读换行符的字符串
getline(cin, str);       // 能读取含空格的字符串,同时自动去掉换行符n

输出

puts(s);
printf("%sn", s);
cout << s << endl;
字符串 *** 作

#include 

// 初始化
string s1; // 默认空字符串
string s2 = s1; // s2是s1的一个副本
string s2 = "hiya"; // s3是该字符串字面值的一个副本
string s4(10, 'c'); // s4的内容是cccccccccc

//读入/输出
//不能用scanf读入,但可以用printf输出
cin >> s1;
getline(cin, s1);
printf("%s", s1.c_str()); // 返回存储s1的字符数组的首地址,用printf输出
puts(s1);

s1.empty(); // 判断是否为空字符串
s1.size(); // 长度,与stelen()不同的是,这个复杂度是O(1),不用额外的变量保存
s1.pop_back(); // 删掉最后一个字符
s1.substr(begin, length);   //位置指定的子串

// 按字典序比较 ">"、"<"
// 加法拼接时,要保证加号两边至少有一个string变量

for (char ch : str) {...}   // 遍历(不可修改字符)
for (char &ch : str) {...}  // 遍历(可修改字符)

auto s; // 可以自动判别类型
遍历字符串

双指针算法
从前向后遍历整个字符串

for(i=0;i 
字符串流 

#include 

string s;
stringstream ssin(s);
while(ssin >> s) {...}      // 按空格拆分成 字符串s,例如英语句子拆分单词

// 可用如下代码代替
while(cin >> word) {
    ...
}


题目

763. 循环相克令
772. 只出现一次的字符
770. 单词替换
771. 字符串中最长的连续出现的字符
777. 字符串乘方
779. 最长公共字符串后缀

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5711862.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存