C++ string 类使用教程

引用头文件

#include <iostream>
#include <string>

初始化赋值

1. 空串

string s; //s是一个空串

2. 拷贝复制

string s2=s1; //拷贝初始化,s1是string类对象
string s2(s1); //直接初始化,s1是string类对象

3. 直接初始化赋值

string s1=“hello world”; //拷贝初始化
string s2(“hello world”); //直接初始化

4. 单个字符初始化

string s(10, 'a'); //直接初始化,s的内容是aaaaaaaaaa

遍历 string 类

1. 下标索引遍历

#include <iostream>
#include <string>
 
int main() {
    std::string str = "Hello World";
    
    for (int i = 0; i < str.length(); i++) {
        std::cout << str[i] << std::endl;
    }
    
    return 0;
}

2. 迭代器遍历

#include <iostream>
#include <string>
 
int main() {
    std::string str = "Hello World";
    
    for (std::string::iterator it = str.begin(); it != str.end(); ++it) {
        std::cout << *it << std::endl;
    }
    
    return 0;
}

3. 使用 range for 循环遍历字符串(需要 C++11 或更新的版本)

#include <iostream>
#include <string>
 
int main() {
    std::string str = "Hello World";
    
    for (char c : str) {
        std::cout << c << std::endl;
    }
    
    return 0;
}

printf 打印 string

string str1 = "hello";
printf("%s \n", str1.c_str());

类型强转

int 和 string 类型强转

  1. int -> string : to_string( )
    int、long、loat、double等类型 转换 成 string
double num = 12.3456789;
string str1 = to_string(num);
  1. string -> int : atoi( )
    string 类型强转为 int 类型
string str1 = "123";
int num = stoi(str1);  // stoi 参数只能是字符串类型,不能是字符类型

迭代器

string 容器支持 ++ -- +i -i 操作

string 常用方法

方法说明
begin()将开头元素迭代器返回
end()将迭代器返回到结束
cbegin()它将 const_iterator 返回到开头
cend()它返回一个指向字符串末尾字符的 const_iterator
rbegin()它返回反向迭代器以反向开始
rend()它将反向迭代器返回到反向结束
size()返回字符串的长度
length()返回字符串的长度
clear()清除字符串
empty()测试字符串是否为空
at(n)获取字符串位置 n 的字符
back( )用于访问最后一个字符
front( )用于访问第一个字符
operator+=添加到字符串
append(str)添加到字符串
push_back(c)将一个字符附加到字符串
pop_back()用于删除最后一个字符
insert(n, str)在 n 处插入 str
erase(n, len)在 n 处删除 len 个字符
replace(n, len, str2)从位置 n 开始,删除 len 个字符,并插入str2
c_str( )用于获得等效的 C 字符串
str.find( string )在 str 中查找 string,找到返回索引迭代器
str.substr(size_t pos, size_t len)截取字符串 : pos表示要截取的子字符串的起始位置,len表示要截取的子字符串的长度

判断字符串是否为空串

s.empty( ) 判断字符串是否为空串

获取字符串中字符个数

两种方法并没有区别

  1. s.size( ) 获取字符串中字符个数
  2. s.length( ) 获取字符串中字符个数

插入元素

s.insert(pos, args) 在 pos 之前插入 args 指定的字符

// 在 s 的位置 0 之前插入 s2 的拷贝
s.insert(0, s2) 

删除元素

s.erase(pos, len) 删除从 pos 开始的 len 个字符。如果 len 省略,则删除 pos 开始的后面所有字符。返回一个指向 s 的引用

string str; //字符串
string target=",/"; //要删除的指定字符串
int n=target.size();//要删除的指定字符串的长度
cout<<"请输入字符串str:";
while(cin>>str){
    if(cin.peek()=='\n') break;//遇到回车则停止输入字符串str
}
int p=str.find(target);//找到指定删除字符串target在str中的位置
str.erase(p,n);//删除字符串str中的指定字符串target

追加字符串

s.append(args) 将 args 追加到 s。返回一个指向 s 的引用。 args 必须是双引号字符串

std::string str;
std::string str2="Writing ";
std::string str3="print 10 and then 5 more";

str.append(str2);  // Writing 
str.append(str3,6,3);  // Writing 10 
str.append("dots are cool",5);  // Writing 10 dots 
str.append("here: ");  // Writing 10 dots here: 
str.append(10u,'.');  // Writing 10 dots here: ...........

替换字符串中指定字符

  1. s.replace(n, len, str2) 从位置 n 开始,删除 len 个字符,并插入str2
  2. s.replace(n, len, str2) 从位置 n 开始,删除 len 个字符,并插入str2
string str1 = "123456789";
string str2 = "abc";
str1.replace(1, 2, str2);  // 从位置 1 开始,删除 2 个字符,并插入 "abc" 删除插入的字符数量不必相等
// 1abc456789
str1.replace(5, 1, str2, 1,2);  // 从位置 5 开始,删除 1 个字符,并插入str2 中从 1 开始的 2 的字符 "bc"
// 1abc4bc6789

字符串翻转

s.reverse() 翻转字符串

#include <iostream>
#include <algorithm> 
string s2 = "12345";    // 初始化一个字符串
reverse(s2.begin(), s2.end()); // 反转 string 定义的字符串 s2 
cout << s2 << endl; // 输出 54321

返回可以直接打印的字符串

s.c_str() 返回一个正规的C字符串指针也就是char* 类型的指针

#include <iostream>
#include <string>

int main()
{
    char* c;
    std::string a="1234";
    c = (char*)a.c_str();
    printf("c = %s \n", c);
    return 0;
}

截取部分字符串

str1.substr(23)表示从2第二个开始,向后截取3个字符

处理string对象中的字符 ,针对某个字符的特性判断函数

C++标准库中 cctype 中的主要函数,该库主要是字符处理功能,这个头文件声明了一组函数来分类和变换单个字符。这个库中主要有两种函数:一类负责字符分类功能;一类负责字符转换功能。
在这里插入图片描述

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值