前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >c++ 中标准库类型 string 详解

c++ 中标准库类型 string 详解

作者头像
洁洁
发布2023-10-10 13:35:49
3980
发布2023-10-10 13:35:49
举报
文章被收录于专栏:小洁叫你mysql

👁‍🗨👁‍🗨

前言

标准库类型string 表示可变长的字符序列,使用string 类型必须首先包含string 头文件。string 定义在命名空间std 中。

定义和初始化 string 对象

首先说明如何初始化对象是由类本身决定的,一个类可以定义很多初始化对象的方式。 例: 初始化string对象的方式

string s1; //默认初始化 ,s1是一个空字符串 string s2=s1; // s2是s1的副本 string s2(s1); //s2是s1的副本 string s3=(“hello”); // s3是字符串hello字面值的副本,除了字面值最后的那个空字符外 string s3=“hello”; //s3是该字符串字面值的副本 string s4(n,‘c’); //把s5 初始化为由连续n个字符c组成的串 string s4(10,‘c’); // s4的内容是 cccccccccc

直接初始化和拷贝初始化

如果使用(=)初始化,实际是拷贝初始化,把=右侧的初始化值拷贝到新建的对象中去, 不使用(=),是直接初始化。 当初始化值为一个时用哪种方式都一样。但是当初始化要有多个值时,就要用到直接初始化了。 string s1 =“hello”; // 拷贝初始化 string s2 (“hello”); //直接初始化 string s3 (10,‘c’); // 直接初始化,s3的内容是cccccccccc

string的操作

os<<s

将s写入到输出流os中,返回os

is>>s

从is中读取字符串赋给s,字符串以空白分隔,返回is

getline(is,s)

从is中读取一行赋给s,返回is

s.empty( )

s为空返回 true, 否则返回 false

s.size( )

返回s中字符的个数

s[n]

返回s中第n个字符的引用,位置n从0计起

s1+s2

返回s1和s2连接后的结果

s1=s2

用s2的副本代替s1中原来的字符

s1==s2

如果s1和s2中所含的字符完全一样,则它们相等

< ,<=, > ,>=

利用字符在字典中的顺序进行比较,对字母的大小写敏感

代码语言:javascript
复制
#include<iostream>
#include <stdio.h>
using namespace std;
int main()
{
	string s;
	cin >> s;
	cout << s << endl;
	return 0;
}

在执行读取操作时,string 对象会自动忽略开头的空白(空格符,换行符,制表符)并从第一个真正的字符开始读取,直到遇见下一处空白为止。

多个输入输出可以连写在一起

代码语言:javascript
复制
#include<iostream>
#include <stdio.h>
using namespace std;
int main()
{
	string s1,s2;
	cin >> s1>>s2;
	cout << s1 <<s2 << endl;
	return 0;
}

用getline 读取一整行

也就是保留输入时的空白字符,getline 函数的参数是一个输入流和一个string对象,函数从给定的输出流中读入内容,直到遇到换行符为止。(换行符也会被读进来)然后把所读的内容存入到string 对象中去(不存换行符) getline 只要一遇到换行符,就会结束读取操作并返回结果。 如果第一个字符就是换行符,那么所得的结果是个空string。

两个string 对象相加

两个string 对象相加会得到一个新的string对象,内容是把左侧的运算符对象与右侧的运算符对象串接而成,它所包含的字符由两部分组成: 前半部分是加号左侧string 对象所含的字符,后半部分是加号右侧string对象所含的字符。 复合赋值运算符(+=)负责把右侧string 对象的内容追加到左侧 string 对象的后面

代码语言:javascript
复制
#include<iostream>
#include <stdio.h>

using namespace std;
int main()
{
	string s1 = "hello,", s2 = "world!\n";
	string s3 = s1 + s2;
	s1 += s2;
	cout << s3<< endl;
	cout << s1 << endl;
	return 0;
}
代码语言:javascript
复制
hello,world!

hello,world!


D:\VS\test1 c++\x64\Debug\test1 c++.exe (进程 14024)已退出,代码为 0。
按任意键关闭此窗口. . .

字面值和string对象相加

代码语言:javascript
复制
string s1 = "hello,", s2 = "world!\n";
string s3 = s1 + s2;
string s4 = s1 + ";";
//正确:一个string对象,一个字面值

string s5= "hi" +"hii" ;
// 错误:两个运算对象都不是string
//字面值不能直接相加
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-09-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档