<本文内容偏多,作者写出来很不容易(中间有一次没有保存,然后谷歌浏览器页面崩了,结果......),所以希望大家多多支持>
Hello!大家好!
今天我们来整理一下string字符串类型的内容
头文件
对于一个独立的变量类型来说,头文件当然是必不可少的;
string类型在c++中有两个头文件,一个是 #icnlude <string>
另一个是 #include <cstring>
这两个都可以使用,详细的区分可以去 https://www.cplusplus.me/1786.html ;
#include <string>
#include <cstring>
#include <string.h>
#include <bits/stdc++> //string也当然包括在万能头里;
using namespace std;
int main() {
return 0;
}
声明&定义
string的声明很简单,只是“string + 变量名”就可以了;
#include <iostream>
#include <string> //三种头文件都可以,本文中都统一使用string(我是绝对不会告诉你是因为短,写的快的)
using namespace std;
int main() {
string s;
return 0;
}
输入&输出
string的输入输出也没有任何特别之处,就是标准的输入(cin)输出(cout)即可;当然,由于是一个字符“串”所以使用循环来依次输出每一位当然也是没问题的,尤其是在题目要求对字符串中每一位进行一定更改时,但由于这里需要用到c+ +设置好的头文件中的函数,所以我们后面一起说。
但接下来问题又来了,当题目要求需要输入带空格的字符串时我们又该怎么办呢,由于c+ +语言中,编译器会自动认定空格前后是两个不同的变量,所以正常的输入肯定是不能用了,这时候就需要用到一些特别的输入方法了,这里给大家介绍一个方法: getline
;
首先看名字就差不多可以知道他的用途:get是拿,取;line是行。直面意思就是取(读入)这一行中的内容;那么他的作用也是这样。直接读入这一行中所有的内容,没错,就是这么豪横。
使用方法嘛,也不难: getline(cin, s(变量名,以s为例))
#include <iostream>
#include <string> //头文件少不了
using namespace std;
int main() {
string s; //用前声明
cin >> s; //标准输入
cout << s; //标准输出
return 0;
}
#inlcude <iostream>
#include <string> //头文件不能忘
using namespace std;
int main() {
string s; //用前声明
getlin(cin, s); //getline它来了
cout << s; //标准输出就可以,花里胡哨的放在后面;
return 0;
}
取位
string作为一个字符“串”类型,自然有”位”的存在,string类型中的位数与数组等一样,从0开始计数;
当我们想取到当中的第x位时,只需用s[x]就可以了;
#include <iostream>
#include <string>
using namespace std;
int main() {
string s; //声明一个字符串s
int x; //声明一个int类型,用来存需要输出的位数;
cin >> s >> x; //输入这两个变量
cout << s[x]; //输出这一位
return 0;
}
s.size()/s.length的使用
这里来说说这个 s.size()
吧
s.size()
是string类型中非常常用的一个函数,与其他.size()用法一样,就是这个变量的位数,这也是上面循环遍历每一位的必要内容,同时还要注意,遍历时要从0到s.size() - 1计;
s.length完全相同
#include <iostream>
#include <string>
using namespace std;
int main() {
string s; //声明这个字符串类型变量
cin >> s; //输入他
for (int i = 0; i < s.size(); i++) { //做一个循环,从0开始,<s.size()结束,不能加=
cout << s[i]; //这里可以对每一位按题目要求进行改动,这里就简单输出了
}
return 0;
}
小测验
上面的内容都掌握了吗,我们来试一道小题!
题目描述:
输入一个字符串(可能带空格),输出原文,第N位,倒序输出原文字母大小写转换的结果;
输入格式:
共2行;
第一行一个字符串;
第二行一个整数N
输出格式:
三行
第一行输入字符串的原文;
第二行输入字符串的第N位;
第三倒序输出原文字母大小写转换的结果;
样例输入:
Hello World!
7
样例输出:
Hello World!
W
!DLROw OLLEh
这里推荐自己先做一下,下面是题解
#include <iostream>
#include <string> //首先头文件不能少
using namespace std;
int main() {
string s; //声明string变量
int n; //声明位数n
getline(cin, s); // 用getline输入带空格的字符串
cin >> n; // 输入要求的位数n
cout << s << endl;// 输出原文
cout << s[n - 1] << endl; // 输出要求的第n位,但由于从0计位,所以比正常位数少1位
for (int i = s.size() - 1; i >= 0; i--) { // 倒序循环,从s.size() - 1开始,到0结束
if (s[i] >= 'a' && s[i] <= 'z') { // 判断如果是小写字母
s[i] = s[i] - 'a' + 'A'; // 让这一位变成大写
} else if (s[i] >= 'A' && s[i] <= 'Z') { // 如果是大写字母
s[i] = s[i] - 'A' + 'a'; // 让这一位变成小写
}
cout << s[i]; // 输出这一位
}
return 0;
}
各位大佬,有误勿喷
%%%%%
头文件还有
#include<string.h>
哦收到,已加入
%%%
不敢不敢
大佬
已赞
谢大佬
%%%%%%%%%%%%%%%%
%抽风大佬
捕捉抽风大佬%%%%%%%%%%%%%%%%%%%
再比较一下字符串和字符数组
char a[]
,字符数组指针char *p
就更好了 :)收到,谢谢大佬