string字符串的基本使用

简介: string字符串的基本使用

string类型的定义与初始化


1. string s1;//定义一个字符串 
2. string s2(s1);//用s1初始化s2 
3. string s3("world");//将s3初始化为"world" 
4. string s4(n,'c');//将s4初始化为n个字符'c'


string类型的读写

string类型的读写就像其它类的读写一样,使用cin,cout。

使用cin读入string类型,就像用scanf();读字符数组一样,忽略开头的(制表符、换行符、空格),当再次碰到空字符就停止(并不会读取空字符)。由于读入时忽略了空字符,我们可以将其记作cin读字符串读的是单词。


1. cin>>s; //输入" Hello world!" 
2. cout<<s;//返回"Hello"


如果我们需要读取的是句子,可以使用getline函数。getline的原型是:getline(cin,s); cin指的是读入流,一般情况下我们直接写cin即可,s是字符串,即将我们读入的东西存放在字符串s中。


1. getline(cin,s); //输入" Hello world!" 
2. cout<<s;//返回" Hello world!"

string 类型的操作函数

s.empty()           如果s为空串,则返回true,否则返回false

s.size()              返回s中字符的个数,s.length()用法与s.size()相同

s[n]                    返回s中位置为n的字符,位置从0开始计数(可将值赋给s[n])

s1+s2                把s1和s2连接成一个新字符串,返回新生成的字符串

s1=s2                把s1内容替换为s2的副本

v1==v2              比较v1与v2 的内容,相等则返回true ,否则返回false

!=,<,<=,>和>=    保持这些操作符惯有的含义

string字符串的相加

1. string s1("Hello ");
2. string s2("world!\n");
3. s1+=s2; 
4. cout<<s1;//输出"Hello world!"且换行
1. string s1("Hello ");
2. string s2("world!");
3. string s3=s1+",";//合法 s3="Hello ," 
4. //string s4="hello "+"world!";//非法操作
5. string s5=s1+","+"world!" ;//合法 s5="Hello ,world!"
6. //自左向右结合,s1+"," 变成一个字符串类型,然后再与"world"连接 
7. //string s6="hello"+","+s2;//非法,因为"hello"与","都是字符数组类型

string字符串的下标

1. string str="2+2=4";
2. cout<<str[1]<<endl;//输出"+"
3. str[1]='*';
4. cout<<str;//输出"2*2=4"

string 其它一些常用操作:

s.insert(pos,s2)             在s下标为pos的元素前插入string类型s2

s.substr(pos,len)           返回一个string类型,它包含s中下标为pos起的len个字符

s.erase(pos,len)            删除s中下标为pos开始的len个字符

s.replace(pos,len,s2)    删除s中下标为pos的len个字符,并在下标为pos处插入s2

s.find(s2,pos)                在s中以pos位置起查找s2第一次出现的位置,若查找不到返回string::npos

s.c_str()                         返回一个与s字面值相同的C风格的字符串临时指针

1. string s1="1234",s2="4321";
2. cout<<s1+s2<<endl;//输出"12344321" 
3. int a,b;
4. sscanf(s1.c_str(),"%d",&a);//sscanf()的作用是从字符数组中读入
5. sscanf(s2.c_str(),"%d",&b);
6. cout<<a+b<<endl;//输出"5555"

同样也可以利用sprintf()将数据输入到sprintf()。sscanf()/sprintf()的用法与scanf()/printf相同,只是在参数中第一个加个字符数组。

相关文章
|
3月前
|
安全 Java API
【Java字符串操作秘籍】StringBuffer与StringBuilder的终极对决!
【8月更文挑战第25天】在Java中处理字符串时,经常需要修改字符串,但由于`String`对象的不可变性,频繁修改会导致内存浪费和性能下降。为此,Java提供了`StringBuffer`和`StringBuilder`两个类来操作可变字符串序列。`StringBuffer`是线程安全的,适用于多线程环境,但性能略低;`StringBuilder`非线程安全,但在单线程环境中性能更优。两者基本用法相似,通过`append`等方法构建和修改字符串。
59 1
|
18天前
|
NoSQL Redis
Redis 字符串(String)
10月更文挑战第16天
30 4
|
29天前
|
canal 安全 索引
(StringBuffer和StringBuilder)以及回文串,字符串经典习题
(StringBuffer和StringBuilder)以及回文串,字符串经典习题
33 5
|
1月前
|
存储 JavaScript 前端开发
JavaScript 字符串(String) 对象
JavaScript 字符串(String) 对象
40 3
|
3月前
|
NoSQL 安全 Java
Redis6入门到实战------ 三、常用五大数据类型(字符串 String)
这篇文章深入探讨了Redis中的String数据类型,包括键操作的命令、String类型的命令使用,以及String在Redis中的内部数据结构实现。
Redis6入门到实战------ 三、常用五大数据类型(字符串 String)
|
2月前
|
存储 C++
C++(五)String 字符串类
本文档详细介绍了C++中的`string`类,包括定义、初始化、字符串比较及数值与字符串之间的转换方法。`string`类简化了字符串处理,提供了丰富的功能如字符串查找、比较、拼接和替换等。文档通过示例代码展示了如何使用这些功能,并介绍了如何将数值转换为字符串以及反之亦然的方法。此外,还展示了如何使用`string`数组存储和遍历多个字符串。
|
3月前
|
C# 开发者 UED
WPF开发者必备秘籍:深度解析文件对话框使用技巧,打开与保存文件原来如此简单!
【8月更文挑战第31天】在WPF应用开发中,文件操作是常见需求。本文详细介绍了如何利用`Microsoft.Win32`命名空间下的`OpenFileDialog`和`SaveFileDialog`类来正确实现文件打开与保存功能。通过示例代码展示了如何设置文件过滤器、初始目录等属性,并使用对话框进行文件读写操作。正确使用文件对话框能显著提升用户体验,使应用更友好易用。
68 0
|
3月前
|
API C# 开发者
WPF图形绘制大师指南:GDI+与Direct2D完美融合,带你玩转高性能图形处理秘籍!
【8月更文挑战第31天】GDI+与Direct2D的结合为WPF图形绘制提供了强大的工具集。通过合理地使用这两种技术,开发者可以创造出性能优异且视觉效果丰富的WPF应用程序。在实际应用中,开发者应根据项目需求和技术背景,权衡利弊,选择最合适的技术方案。
128 0
|
3月前
|
存储 JSON NoSQL
揭秘Redis字符串String的隐藏技能!从基础到进阶,让你的数据存储操作秒变高大上!
【8月更文挑战第24天】Redis中的字符串类型作为其基石,不仅能够存储从简单文本到复杂格式如JSON的各种数据,还能通过多样化的命令实现包括但不限于自增自减、设置过期时间等高级功能,极大提升了其实用性和灵活性。例如,使用`SET`命令可添加或更新键值对,`GET`获取值,`DEL`删除键;同时,`INCR`和`DECR`支持对整数值的原子性增减操作,非常适合实现计数器等功能;通过`EXPIRE`命令设置过期时间,则适用于需要限时存储的应用场景。尽管名为“字符串”,但实际上还可存储图片、音频文件的Base64编码等形式的数据,为开发者提供了强大而灵活的工具。
47 0
|
3月前
|
存储 Java