c++中字符串的使用,自学笔记

1.C风格字符串(用字符数组保存字符串)
char site[7] = {‘R’, ‘U’, ‘N’, ‘O’, ‘O’, ‘B’, ‘\0’};
char site[] = “RUNOOB”;//此数组长度为7,因为包含了末尾的\0"

实例:
 
#include <iostream>
 
using namespace std;
 
int main ()
{
   char site[7] = {'R', 'U', 'N', 'O', 'O', 'B', '\0'};
 
   cout << "hello";
   cout << site << endl;
 
   return 0;
}

2.C++ 中的 String 类(要包含头文件#include )


实例:
 
#include <iostream>
#include <string>
 
using namespace std;
 
int main ()
{
   string str1 = "runoob";
   string str2 = "google";
   string str3;
   int  len ;
 
   // 复制 str1 到 str3
   str3 = str1;
   cout << "str3 : " << str3 << endl;
 
   // 连接 str1 和 str2
   str3 = str1 + str2;
   cout << "str1 + str2 : " << str3 << endl;
 
   // 连接后,str3 的总长度
   len = str3.size();
   cout << "str3.size() :  " << len << endl;
 
   return 0;
}

(1)字符串变量可以对单个字符修改

string str = "google";
str[1]=e;//str变成geogle

(2)也可通过变量名输入输出字符串

cin>>str;
cout<<str<<endl;

(3)字符串变量可用的方法:string str=“google”;

①获取字符串的长度

str.size();   str.length(); //字符串长度为6

②判断字符串是否为空(bool类型)

s.empty();//判断字符串s是否为空,为空则返回true,不为空则返回false

③获取子串

string substr(int pos=0, int n=npos) const;//包含下标pos处的字符,总字符为npos的子串

s1.substr(1,3);//获取从1开始,总字符个数为3的子串,即oog

④从字符串中查找特定的字符或字符串

s1.find('g',1);//从下标1处开始找字符g,返回下标值 //查找结果为3,表示在下标3处找到字符d
s1.find("oo",0);//从下标0处开始查找字符串"oo",返回结果为1,表示在下标1处找到字符串"00"

查找失败会返回npos,可通过if(s1.find(“oo”,0)!=s1.npos)判断是否查找成功

⑤字符串的替换
string &replace(int pos, int n, const char *s);//删除从pos开始的n个字符,然后在pos处插入串s

str.replace(1,2,"yy");//将下标1-2处的字符串替换为"yy",str为gyygle

⑥单个字符或字符串的插入
//在pos位置插入字符串s,字符串有两种表示形式,char*型和string型
string &insert(int pos, const char *s);
string &insert(int pos, const string &s);

string s1 = "google";
string s2 = "yy";
s1.insert(1,s2);或s1.insert(1,"yy");//在s1的下标为1的位置处插入字符串s2;输出结果为"gyyoogle"

string &insert(int pos, int n, char c); //在pos位置 插入n个字符c

s1.insert(1,2,'y');//在下标为1的位置插入2个字符y,此时s1为"gyyoogle"

⑦尾插一个字符

str.push_back('e');//此时str为googlee

⑦字符串子串或单字符的删除
iterator erase(iterator first, iterator last);//删除[first,last)之间的所有字符,返回删除后迭代器的位置,注意右边为开区间
iterator erase(iterator it);//删除it指向的字符,返回删除后迭代器的位置
string &erase(int pos = 0, int n = npos);//删除pos开始的n个字符,返回修改后的字符串

str.erase(str.begin(),str.begin()+2);//删除"go",str为ogle
 
str.erase(str.begin());//删除字符'g',str为oogle
 
str.erase(1,2);//删除str下标从1开始的2个字符,即"oo",str为ggle

(4)字符串变量的运算
string s1=“google”;
string s2=“baidu”;

①复制:直接用赋值号“="
s1=s2;//此时s1为baidu

②连接:直接用加号"+"
s1=s1+s2;//此时s1为googlebaidu

③比较:直接用关系运算符(==,!=,>,<,>=,<=)

(因为在string头文件里已经对这些运算符进行了重载,使它们能用于string类对象的运算)

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值