前言
第一学期学习了C语言 ,接下来学习C++,两者相似,又有不同,接下来给大家分享这周我对C++的初步了解
提示:要想真正掌握标准C++String类,必须学会string类的构造,字符操作,特性描述,输入输出操作,赋值,连接,比较,子串,交换,等一系列操作,一步一步来,就可以.
一、标准C++String类是什么?
string类是<string> 头文件定义的由一个变量类型、一个宏和各种操作字符数组的函数,等同于C语言里的<string.h>头文件 错了措了
string属于STL中标准模板库里面的函数
string与string.h不同,前者是类的头文件,后者则是C语言中字符串操作的头文件
虽说是与C语言对比学习可以好理解一点,但还是要分开本质区别,这样才能学好新的这一语言
二、使用方法
1.C++基本语句
要想使用标准C++中string类,首先必须要包含它的基本框架
(可以对比C语言来学习)
#include<iostream> //#include<stdio.h>
#include<string> //#include<sreing.h>
using namespace std; //打开标准命名空间
int main()
{
//代码块
//代码块
return 0;
}
2.string类的函数和操作:
1.string类的输入函数:
string str;
//或下面一种先定义再输入
cin>>str;
getline(cin,str);
2.string库函数
//字符串长度:length();
string s("My ledal state is AK");
cout<<s.length();
//字符个数:size();
string s("My ledal state is AK");
cout<<s.size();
//输出内存大小:capacity();
string s("My ledal state is AK");
cout<<s.capacity();
//修改内存大小:reserve();
s.reserve(50);
cout<<s.capacity()<<endl;
//重新设置字符个数:resize();
s.resize(8);
cout<<s.capacity()<<endl;
cout<<s.length()<<endl;
cout<<s.size()<<endl;
cout<<s<<endl;
//输出单个字符函数:at();
string s("My ledal state is AK");
cout<<s.at(1)<<endl;
//修改单个字符函数:at();
string s("My ledal state is AK");
s.at(1)='t';
cout<<s.c_str()<<endl;
//输出全部字符:c_str
string s1="The last two questions";
cout<<s1.c_str();
//插入函数
//任意位置插入:insert();
s1.insert(0," ");
cout<<s1<<endl;
//末尾插入/添加:append();
s.append(s1);
cout<<s<<endl;
//指定函数:assign(); (输出前五个字符)
s1.assign("That is true",5);
cout<<s1<<endl;
//比较字符串大小:compare();
//整串比较(同C语言一样如果str1>str2,返回 1,str1=str2返回 0 ,str1<str2返回 -1)
string str1="abcd";
string str2="bcdefg";
cout<<str1.compare(str2)<<endl;
//部分与整串比较(str1的前两个与str2比较)
string str1="abcd";
string str2="cdefg";
cout<<str1.compare(1,2,str2)<<endl;
//部分与部分比较(str1的前两个与str2的前两个比较)
string str1="abcd";
string str2="cdefg";
cout<<str1.compare(1,2,str2,1,2)<<endl;
//复制函数:copy();
char a[10]={0};
str1.copy(a,4,0);
//4表示选取的个数,0是位置下标
cout<<a<<endl;
另外还有
查找函数:find();
返回子串函数:substr();
删除字符:erase;
替换字符:replace;
这些都是相对于C语言来讲在C++上更能体现出来的快捷方便的函数,合理运用会使程序编写更加得心应手
3.string库函数整体代码实现
#include<iostream>
#include<string>
using namespace std;
int main()
{
cout<<"求串的长度和大小:\n";
string s("My ledal state is AK.");
cout<<s.length()<<endl;
cout<<s.size()<<endl;
cout<<"\n";
cout<<"求容量:\n";
cout<<s.capacity()<<endl;
cout<<"\n";
cout<<"扩容:\n";
s.reserve(50);
cout<<s.capacity()<<endl;
cout<<"\n";
cout<<"修改容量:\n";
s.resize(18);
cout<<s.capacity()<<endl;
cout<<s.length()<<endl;
cout<<s.size()<<endl;
cout<<s<<endl;
cout<<"\n";
cout<<"输出/修改单个字符:\n";
cout<<s.at(1)<<endl;
s.at(1)='O';
cout<<s.c_str()<<endl;
cout<<"\n";
cout<<"全输出:\n";
string s1="The last two questions";
cout<<s1.c_str();
cout<<"\n";
cout<<"任意位置插入:\n";
s1.insert(0," ");
cout<<s1<<endl;
cout<<"\n";
cout<<"末尾插入:\n";
s.append(s1);
cout<<s<<endl;
cout<<"\n";
cout<<"指定输出:\n";
string s2;
s2.assign("That is true",5);
cout<<s2<<endl;
cout<<"\n";
cout<<"比较函数:\n";
string str1="abcd";
string str2="cdefg";
cout<<str1.compare(str2)<<endl;
cout<<"\n";
cout<<"复制函数:\n";
char a[10]={0};
str1.copy(a,4,0);
cout<<a<<endl;
cout<<"\n";
cout<<"查找函数:\n";
cout<<(int)s.find("question")<<endl;
cout<<(int)s.find(s1,2)<<endl;
cout<<"\n";
cout<<"查找字符:\n";
cout<<(int)s.find('t')<<endl;
cout<<"\n";
cout<<"返回子串:\n";
cout<<s.substr(38,46);
cout<<"\n";
cout<<"删除部分子串:\n";
s.erase(18,8);
cout<<s<<endl;
cout<<"\n";
cout<<"最终结果为:\n";
s.replace(0,2,"To");
cout<<s<<endl;
}
总结
1.学习C++String类首先要对C++的 基本语法掌握得当,如基本的预处理命令 ,操作符优先级 ,转义字符 ,ASCII码表 ,基本数据类型 和关键字等;
2.说到底C++String类只不过是一个标准函数库,需要学习里面各种函数的使用,多刷题就可以熟练;
3.这只是第一周刚开始,不必着急,基于吧C语言,C++并不难,只是换一下关键字和语法语句而已,有一点时间来适应就可以了.