c++ 中标准库类型 string 详解
创始人
2024-05-31 05:45:15
0

👁‍🗨👁‍🗨

前言

标准库类型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写入到输出流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中所含的字符完全一样,则它们相等
< ,<=, > ,>=利用字符在字典中的顺序进行比较,对字母的大小写敏感
#include
#include 
using namespace std;
int main()
{string s;cin >> s;cout << s << endl;return 0;
}

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

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

#include
#include 
using namespace std;
int main()
{string s1,s2;cin >> s1>>s2;cout << s1 <

用getline 读取一整行

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

两个string 对象相加

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

#include
#include 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;
}
hello,world!hello,world!D:\VS\test1 c++\x64\Debug\test1 c++.exe (进程 14024)已退出,代码为 0。
按任意键关闭此窗口. . .

字面值和string对象相加

string s1 = "hello,", s2 = "world!\n";
string s3 = s1 + s2;
string s4 = s1 + ";";
//正确:一个string对象,一个字面值string s5= "hi" +"hii" ;
// 错误:两个运算对象都不是string
//字面值不能直接相加

相关内容

热门资讯

武陵山天空被鸟群刷屏 转自:JSTV荔枝视频 【#武陵山天空被鸟群刷屏#】眼下...
河南鹤壁有人下河摸金摸铜钱?当... 近日,有网民发布视频称,位于河南省鹤壁市浚县新镇镇卫河流域,有人下河摸金摸铜钱,引发关注。视频显示,...
大连西山水库出现成群黑色大鱼,... 来源:半岛晨报 5月6日下午,市民王先生在大连西山水库发现一群体型较大、通体黝黑的无鳞怪鱼,经专家鉴...
助力工业精神传承,培养创新型人... 5月10日,记者从柳州市教育局获悉,为了更好地将工匠精神、实业报国融入思想政治教育,柳州将打造大中小...
牌桌上的美丽绽放——欧碧奴美容... 转自:衡水日报2025年5月9日,成都青白江东方欲晓十五里休闲中心,160位欧碧奴会员姐姐与亲友闺蜜...
婚姻登记“全国通办”政策问答 来源:“中国民政”微信公号5月10日,新修订的《婚姻登记条例》正式施行,婚姻登记实现“全国通办”。为...
强对流天气致墙体倒塌 3人死亡... 来源:国家应急广播 近日广西百色有网友称参加葬礼时遭遇强对流天气墙体倒塌致多人死伤相关话题冲上社交平...
珍酒李渡举行2024年度股东周... 5月9日,珍酒李渡集团2024年度股东周年大会暨投资者交流会在湖南长沙1912珍酒美食研究所举行,股...
全国仅12个入选!梧州六堡茶国... 转自:梧州发布日前,国家知识产权局公布第一批国家地理标志保护示范区典型案例,全国仅12个保护示范区入...
美业全新动态:杭州美莱受邀出席... 转自:蚌埠新闻网2025年5月7日,杭州美莱受邀亮相2025中国时尚美学盛典Moly Gala,以"...
青年与城市如何共成长?50人论... 来源:中国新闻网 中新网上海5月10日电 题:青年与城市如何共成长?50人论坛交出“上海答卷”作者 ...
葬礼上再发惨剧!3人确认死亡,... 近日,广西百色网友称,参加葬礼遇强对流天气,墙体倒塌致多人死伤。韦女士接受记者采访时表示,近日与家人...
国海证券原总裁意外离世!年61... (转自:金融街1号狙击手)5月10日,据券商中国报道,国海证券原总裁齐国旗近日因遭遇交通意外,不幸离...
永达股份:子公司部分产品应用于... 永达股份(001239)5月9日在业绩说明会上表示,公司控股子公司江苏金源高端装备有限公司部分产品应...
永远不能忘却的纪念(今日谈) 来源:人民日报80年前的伟大胜利打败了不可一世的法西斯势力,带给世人恒久的启迪:光明必将驱散黑暗,正...
社工“寻味儿”救场避免险情   本报讯(实习记者侯国棣)近日,平谷区滨河街道南小区社区84岁的李大爷忘记了厨房正在煮饭的锅,把锅...
美元贬值,这次不一样 美国总统特朗普经常说希望美元贬值。在他看来,这可以降低制造业出口成本,从而促进出口,帮助减少美国巨额...
张本智和:深受雨果世界杯夺冠冲... 来源:九派新闻 近日,日本乒乓球队举行多哈世乒赛赛前新闻发布会,日本男乒选手张本智和在接受采访时谈到...
具茨山原来是中华文明的C位 【#具茨山原来是中华文明的C位#】具茨山位于黄帝故里河南新郑西南,属中岳嵩山东南余脉,东西延绵约40...
李姓股民向ST东时发起索赔 刘...   受损股民可至Hehson股民维权平台登记该公司维权:http://wq.finance.sina...