三、标准库类型(一)

1、命名空间的using声明

每个名字都需要一个using声明,一个using声明一次只能作用于一个命名空间成员:

#include <iostream>

using std::cin;

using std::cout;

using std::endl;

int main()

{

cout << " " << endl;

}

有一种情况下,必须总是使用完全限定的标准库名字:在头文件中。,因为#include,相当于头文件中的文本将成为我们编写的文件的一部分。注意:在头文件中应该只定义确实必要的东西。

2、标准库string类型

#include  <string>

using std::string;

看一个例子:

int main()

{

string s;

cin >> s;

cout << s << endl;

return 0;

}

cin >> s从标准输入读取string,并将读入的字符串存储在s中,string类型的输入操作符:(1)读取并忽略开头所有的空白字符(如空格、换行符、制表符);(2)读取字符直至再次遇到空白字符,读取终止。如:"     Hello  World!"仅会读到"Hello"。

输入输出的行为与内置类型基本类似,返回左操作数作为运算结果。如:

string s1, s2;

cin >> s1 >> s2;

cout << s1 << s2 << endl;

最终的输出是HelloWorld!

 

用getline读取整行文本:getline接收2个参数:一个输入流对象和一个string对象。getline函数从输入流的下一行读取,并保存读取的内容到string中,但不包括换行符。 和输入操作符不一样的是:getline并不忽略开头的换行符,只要getline遇到换行符,即便是输入的第一个字符,getline也将停止读入并返回,如果第一个字符是换行符,则string为空string。

getline函数将istream作为返回值,和输入操作符一样也把它作为判断条件:

while(getline(cin,s))

cout << line << endl;

由于getline函数返回时会丢弃换行符,换行符将不会存储在string对象中。

 

3、string对象的操作

字符串仍然以"/0"标志结束,s.size()不计算"/0"占据的那个空间。

 

s.size()函数返回的类型是:string::size_type类型(使用时必须加上作用域操作符),这是为了C++库可移植性定义的配套类型,定义与unsigned型(unsigned int或unsigned long)具有相同含义,但是注意:任何存储string的size操作结果的变量必须为string::size_type型,不要把size的返回值赋给一个int变量。

 

 

(1)string关系操作符

C++中字符串比较实际上是字符串内字符的比较,而且区分大小写,在大多数机器上大写字母要小于相应的小写字母。在比较字符串时,需要比较两个字符串的长度及字符,如果一个字符串比另一个字符串短,但是短的string对象与长的字符串对象的前面部分匹配,则短的string对象小于长的字符串对象;如果两个string对象的字符不同,则比较第一个不匹配的字符。

(2)string对象的赋值

string st1,  st2 = "The expense of ";

st1 = st2;涉及的工作:先把st1占用的相关内存释放掉,然后再分配给st1足够存放st2副本的内存空间,最后把st2中的所有字符复制到新分配的st1内存空间内。

(3)字符串相加

字符串相加即为字符串连接。

在和字符串字面值相加连接时,+操作符的左右操作数必须至少有一个是string类型的。

string s1 = "hello";

string s2 = "world";

string s3 = "hello"+", "; //error错误

string s4 = s1 + ", "+ "world"; //ok,这是因为s1+", "后返回一个string对象

string s5 = "hello"+", " + s2; //error错误

(4)从string对象获取字符

string s = "Hello";

可以用s[0] == 'H',下标是string::size_type类型的,注意不要越界,也可以用unsigned型

 

(5)字符操作函数

 

(6)采用C标准库头文件的C++版本

C标准库头文件命名形式为name.h,而C++版本则命名为cname,少了后缀.h而在头文件名前加了c,c表示这个头文件源自C标准库。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值