c++的字符串string基本操作大全

 更新时间:2025年12月15日 10:39:51   作者:fish_xk  
C++中的string类型提供了丰富的字符串操作功能,包括创建、赋值、输入输出、查找、插入、删除、截取等,同时,string还支持关系运算和与int值的转换,本文给大家介绍c++的字符串string,感兴趣的朋友跟随小编一起看看吧

string的概念

string是c++专门创建的字符串类型,为了方便操作字符串。

string中很多的方法。

string的基本操作

首先要包含头文件string.

创建

有初始化的创建,它的末尾不以'\0'为结尾。

#include <iostream>
#include<string>
using namespace std; 
int main() {
	string a="hello world";
    //string a("hello world");
	cout<<a;
	return 0;
}

string可以直接赋值

#include <iostream>
#include<string>
using namespace std; 
int main() {
	string a;
	string b("hello world");
	a=b;
	cout<<a;
	return 0;
}

输入

cin输入,不能输入空格

#include <iostream>
#include<string>
using namespace std; 
int main() {
	string a;
	cin>>a;
	cout<<a;
	return 0;
}

getline是c++标准函数,读取一行文本存储为字符。

istream&getline(istream& is,string&str);遇到'\n'停止。

#include <iostream>
#include<string>
using namespace std; 
int main() {
	string a;
	getline(cin,a); 
	cout<<a;
	return 0;
}

istream&getline(istream& is,string&str,char delim);直到遇到delim字符停止

#include <iostream>
#include<string>
using namespace std; 
int main() {
	string a;
	getline(cin,a,'m');//读到m停止 
	cout<<a;
	return 0;
}

获取长度

size(),string有很多函数,用 . 使用

#include <iostream>
#include<string>
using namespace std; 
int main() {
	string b;
	string a="abcd"; 
	string c="abcdefg";
	string d="j k l l l";
	cout<<a.size()<<endl;
	cout<<b.size()<<endl;
	cout<<c.size()<<endl;
	cout<<d.size()<<endl;
	return 0;
}

string的数据也有下标和正常创建的字符数组一样从0开始。

迭代器

用来遍历容器元素。

iterator类似指针,数组下标。

需要*解引用。

begin()和end()

begin()指向第一个位置,end()指向最后的下一个位置,不存在于字符串。

可以比较大小,加减。

#include <iostream>
#include<string>
using namespace std; 
int main() {
	string a="hello world";
	string::iterator it1=a.begin();
	string::iterator it2=a.end();
	if(it1<it2)
		cout<<"<"<<endl;
	else
		cout<<">"<<endl;
	return 0;
}

可以通过*解引用,输出存储的字符。

#include <iostream>
#include<string>
using namespace std; 
int main() {
	string a="hello world";
	string::iterator it1=a.begin();
	string::iterator it2=a.end();
	cout<<*it1<<endl;//[0]
	it1++;
	cout<<*it1<<endl;//[1]
	it1--;
	cout<<*it1<<endl;//[0]
	return 0;
}

使用迭代器遍历。

#include <iostream>
#include<string>
using namespace std; 
int main() {
	string a="abcdef";
	string::iterator it1=a.begin();
	string::iterator it2=a.end();
	for (string::iterator i = a.begin(); i != a.end(); ++i) {
        cout << *i;
    }
	cout<<endl;
	for(auto i=it2-1;i>=it1;--i){
		cout<<*i;
	}
	return 0;
}

还有反向迭代器,reverse_iterator  类型的rbegin(),rend()刚好相反。

尾插函数

a.push_back();在字符串尾部插入字符

#include <iostream>
#include<string>
using namespace std; 
int main() {
	string a="abcdef";
	cout<<a<<endl;
	a.push_back('g');
	cout<<a<<endl;
	return 0;
}

+=和+运算

也可以头部拼接。

尾删pop_back()

空的情况下删除会报错。

insert()插入

a.insert(pos  ,  str),在a字符串中的pos位置前插入,str字符串。str可以是string类型的内容,可以是字符串如下图。

a.insert(pos,n,str)插入n个str的字符到pos前。

#include <iostream>
#include<string>
using namespace std; 
int main() {
	string a="abcdef";
	cout<<a<<endl;
	a.insert(3,"6");
	cout<<a<<endl;
	return 0;
}

find查找

a.find()返回第一次出现的位置。它的返回值是size_t,相当于下标

a.find(str,位置(默认0))

#include <iostream>
#include<string>
using namespace std; 
int main() {
	string a="abcdef abc def l g k";
	string b="de";
	string c="l";
	size_t t=a.find(b);
	cout<<t<<endl;
	cout<<a.find(b,t+1)<<endl;
	return 0;
}

a.find(char*,size_t  pos);

可以查找c风格的字符串。

a.find(str,size_t pos ,n)a字符串中查找str前n给字符

也可以找字符。str

找不到会放回-1;无符号整型的-1。2^32-1;

substr()

a.substr(pos,len=npos);pos截取的开始,npos截取的长度。pos默认为0,npos默认到字符串末尾

的长度。

用于截取a字符串pos位置开始n个的字符。

#include <iostream>
#include<string>
using namespace std; 
int main() {
	string a="abcdefghi";
	string b=a.substr(3,3);
	string c=a.substr(3);
	cout<<b<<endl;
	cout<<c<<endl;
	return 0;
}

关系运算

==,至少有一个str的字符才可以比较,比较的ascii值对应位置。

#include <iostream>
#include<string>
using namespace std; 
int main() {
	string a="abcdefghi";
	string b="abcdefghi";
	if(a==b)
		cout<<"=="<<endl;
	string c="abcdefgh";
	if(a!=c)
		cout<<"!="<<endl;
	string d="b";
	if(a<d)
		cout<<"<"<<endl;
	string e="aa";
	if(a>e)
		cout<<">"<<endl;
	return 0;
}

字符串和int 值的转换。

stoi/stol,stol是int ,stol是long int。

int stoi(str,size_t* idx=0,int base=0)

long stol(str,size_t* idx=0,int base=0)

str是string类型的字符串。

idx是一个指针,从idx位置开始到第一个无法匹配的下标返回

如“123q”返回q的位置

base表示被解析的数字的进制,

2表示被解析的数字当作2进制数字,转化为10进制。

0是自动推到如0x是16,0是8;

#include <iostream>
#include<string>
using namespace std; 
int main() {
	string a="123p";
	size_t t=0;
	int b=stoi(a,&t,10);
	int c=stoi(a,&t,8);
	cout<<b<<endl;
	cout<<c<<endl;
	return 0;
}

stod转化为double,stof转化为float

stod(str,size_t* idx);只有10进制。

stof(str,size_t* idx);

to_string

把数字转换为字符串。

反转字符串

reverse要包含头文件algorithm.

reverse(首元素的地址,反转范围末尾的下一个元素)。

#include <iostream>
#include <string>
#include <cstdio>
#include <algorithm>
using namespace std; 
int main() {
    string str;
    cin>>str;
	reverse(str.begin(),str.end());
	cout<<str;
    return 0;
}

到此这篇关于c++的字符串string基本操作大全的文章就介绍到这了,更多相关c++字符串string内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • C语言实现扫雷游戏简易版

    C语言实现扫雷游戏简易版

    这篇文章主要为大家详细介绍了C语言实现扫雷游戏简易版,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-11-11
  • QT6中绘制UI的两种方法详解与示例代码

    QT6中绘制UI的两种方法详解与示例代码

    Qt6 提供了两种主要的 UI 绘制技术:​​QML (Qt Meta-Object Language)​​ 和 ​​C++ Widgets​​,这两种技术各有优势,适用于不同的开发场景,本文将详细介绍这两种技术,并通过示例代码展示它们的用法,需要的朋友可以参考下
    2025-05-05
  • C++编译期类型生成示例代码详解

    C++编译期类型生成示例代码详解

    在C++中,编译期计算表达式是通过利用C++语言的特性,在程序编译阶段而非运行时完成计算任务,下面这篇文章主要介绍了C++编译期类型生成的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2025-09-09
  • C语言详细分析讲解多文件的程序设计

    C语言详细分析讲解多文件的程序设计

    所谓的C语言多文件编程就是,将代码实现模块化。比如说一个项目的一项功能放在一个一个文件里,然后将实现这个功能的函数放在一个c文件<BR>
    2022-04-04
  • vs2019安装及简单处理技巧(超详细)

    vs2019安装及简单处理技巧(超详细)

    这篇文章主要介绍了vs2019安装及简单处理方法,本文是一篇非常详细的教程,通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-06-06
  • C++深拷贝与浅拷贝的区别及应用

    C++深拷贝与浅拷贝的区别及应用

    这篇文章主要给大家介绍了关于C++深拷贝与浅拷贝区别及应用的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04
  • 基于Qml实现水印工具

    基于Qml实现水印工具

    这篇文章主要介绍了如何在 Qml 中实现一个简单但功能强大的水印工具,包括水印文本的透明度、颜色、字体大小、旋转角度等自定义功能,需要的可以参考下
    2024-12-12
  • C语言并查集的非递归实现详解

    C语言并查集的非递归实现详解

    以下是对C语言并查集的递归实现与非递归实现代码进行了详细的介绍,需要的朋友可以过来参考下,希望能够给你带来帮助
    2021-09-09
  • C语言实现简单学生选课管理系统

    C语言实现简单学生选课管理系统

    这篇文章主要为大家详细介绍了C语言实现简单学生选课管理系统,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-02-02
  • Qt中QPainter与坐标的使用

    Qt中QPainter与坐标的使用

    本文主要介绍了Qt中QPainter与坐标的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-04-04

最新评论