您的位置:首页 > 编程语言 > C语言/C++

C++标准库string类型

2014-08-19 14:57 218 查看
string类型支持长度可变的字符串,C++标准库将负责管理与存储与字符串相关的类容,以及提供各种有用的操作。标准库string类型的目的就是满足对字符串的一般应用。

包含头文件

#include<string>


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

string s1; 默认构造函数
string s2(s1); 将s2初始化为s1的一个副本
string s3("value") 将s3初始化为一个字符串字面值副本
string s4(n,'c') 将s4初始化为字符'c'的n个副本



2.string对象的读写



cout<<s<<endl;


cin>>s;
注意:读取忽略开头的所有空白字符(如空格,换行符,制表符)

   读取字符直至再次遇到空白字符,读取终止。
如:输入"Hello World!",实际上读取到了"Hello"。




3.string对象的操作

s.empty() 如果s为空串,则返回true,否则返回false
s.size() 返回s中的字符个数
s
返回s中位置为n的字符,位置从0开始计数
s1+s2 把s1和s2连接成一个新的字符串,返回新生成的字符串
s1=s2 把s1的内容替换成s2的副本
s1==s2 比较s1和s2的内容,相等返回true,否则返回false
!=,<,<=,>,>= 保持这些操作符贯有的含义

注意:
1.s.size()返回的类型是string::size_type。
2.比较string实际上是比较string的字符。
3.string对象相加,可以是string对象与string对象相加,string对象与字符串字面值相加,不允许字符串字面值相与字符串字面值相加。
"Hello"+" World"    //error

4.字符串对象中的字符处理

我们经常要对string对象中的单个字符进行处理,例如,通常要知道某个特殊字符是否为空白字符,字母或数字。在cctype头文件中定义了对string的操作。

其中的函数的解释如下
isalnum(c)            如果c是数字或者字母,则为true
isalpha(c)            如果c是字母,则为true
iscntrl(c)            如果c是控制字符,则为true
isdigit(c)            如果c是数字,则为true
isgraph(c)            如果c不是空格,但可打印,则为true
islower(c)            如果c是小写字母,则为true
isprint(c)            如果c是可以打印的字符,这位true
ispunct(c)            如果c是标点符号,则为true
isspace(c)            如果c是空白字符,则为true
isupper(c)            如果c是大写字母,则为true
isxdigit(c)           如果c是十六进制数,则为true
tolower(c)            如果c是大写字母与,则返回其小写字母形式,否则直接返回c
toupper(c)            如果c是小写字母,则返回其大写字母形式,否则直接返回c
大部分函数式测试一个给定的字符是否符合条件,并返回一个int值作为真值。如果测试失败则返回0,否则返回一个无意义的非0值,表示被测试的字符符合条件。
 

可打印的字符是指那些可以显示表示的字符。空白字符则是空格,制表符,垂直制表符,回车符,换行符和进纸符中的任一种;标点符号就是除了数字,字母或(可打印的)空白字符(如空格)以外的其他可打印字符。

下面的程序是将"Hello World!"字符串变为小写的Demo:
#include <iostream>
#include <string>
#include <cctype>
using namespace std;
int main()
{
string s1="Hello World!";
for(string::size_type i=0;i!=s1.size();i++)
{
s1[i]=tolower(s1[i]);
}

cout<<s1<<endl;
return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: