标准库string类型

string类型支持长度可变的字符串

#include <string>

using std::string;

 

1.string对象的定义和初始化

(1)string s1;                           默认构造函数,s1为空串

(2)string s2(s1);                     将s2初始化为s1的一个副本

(3)string s3("value");              将s3初始化为一个字符串字面值副本

(4)string s4(n,'c');                   将s4初始化为字符'c'的n个副本

注意:字符串字面值和标准库string类型不是同一种类型

 

2.string对象的读写

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

 cin>>s:读取并忽略开头所有的空白字符、读取字符直到再次遇到空白字符,读取终止。

 

3.读入未知数目的string对象

string world;
while(cin>>world)
{
	cout<<world<<endl;
}

4.用getline读取整行文本

string world;
while(getline(cin,world))
{
	cout<<world<<endl;
}

 5.string对象的操作之size和empty操作

string st("Hello World\n");
cout<<"The size of "<<st<<"is "<<st.size()
	<<" character, including the newline"<<endl;

 了解st是否为空,一种方法是将size与0进行比较if(st.size() == 0)...。

可以直接换成:

if(st.empty()){//...}

 注意:st.size()返回值是string::size_type类型,任何存储string的size操作结果的变量必须为string::size_type类型。特别的重要,不要把size的返回值赋给一个int变量。因为这是最安全的方法。

 

6.string的关系操作符==、!=、<、<=、>、>=

注意:string对象的比较操作时区分大小写的,即同一个字符的大小写形式被认为是两个不同的字符。在大多数计算机上,大写的字母位于小写的字母之前:任何一个大写字母都小于任意的小写字母

 

7.string对象的相加

string对象的相加被定义为连接。

string st1("Hello");
string st2("World\n");
string st3 = st1 + st2;
cout<<st3<<endl;

8.string对象和字符串字面值的连接

注意:当进行string对象和字符串字面值混合连接操作时,+操作符的左右操作数必须至少有一个是string类型的

string s1("hello");
string s2("world");
string s3 = s1 + "," + s2 + "\n";
cout<<s3<<endl;
string ss1 = "hello";
string ss2 = "world";
string ss3 = s1+",";
string ss4 = "hello" + ",";//错误
string ss5 = s1 + "," + "world";
string ss6 = "hello" + "," + s2;//错误

 9.从string对象获取字符

string类型通过下标操作符([])来访问string对象中的单个字符。下标操作符需要取一个size_type类型的值,来标明要访问的字符的位置,这个下标通常被称为“下标”或“索引(index)”

注意:string对象的下标从0开始,如果s是一个string对象且s不为空,则s[0]就是字符串的第一个字符,s[s.size()-1]则表示s的最后一个字符

string s("some string");
cout<<s.size()<<endl;
for(string::size_type ix = 0; ix!=s.size();++ix)
	cout<<s[ix]<<endl;

 

 10.下标错做可用作左值

string s("some string");
cout<<s.size()<<endl;
for(string::size_type ix = 0; ix!=s.size();++ix)
	s[ix]='*';

 11.下标值

任何可以产生整型值的表达式都可以用作下标操作符的索引。

虽然任何整型值都可作为索引,但索引的实际数据类型却是unsigned类型string::size_type。

string s("some string");
cout<<s.size()<<endl;
for(string::size_type ix = 0; ix!=s.size();++ix)
	s[ix]='*';
int a=1;
int b=2;
s[a+b] = '%';
cout<<s<<endl;

 注意:string对象的索引变量最好也用string::size_type类型

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值