string类型

来源:互联网 发布:get软件是真鞋么 编辑:程序博客网 时间:2024/05/20 21:18

string是  c++标准的字符串类型,负责管理与存储字符相关的内存。

使用string需要包含 头文件 #include <string>  同时需指定命名空间 using std::string (或直接使用std::).


几种初始化string的方式:

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

(为了与c兼容,字符串自面值与标准库string类型不是同一种类型,需要特别注意)


string对象的读写

string对象可用标准输入输出符来读写string

   std::string str;    //std::cin >>str; //读取一个string 忽略开头的空格 以空格结束   // std::cout <<str<<std::endl;    //while(std::cin>>str) // 读取一组string     while(std::getline(std::cin,str)){         std::cout<<str.size()<<std::endl;        std::cout<<str<<std::endl;        std::cout<<str[3]<<std::endl;        if(isalpha(str[3]))            std::cout<<"is word!";        else            std::cout<<"not word!";      }

string对象操作

s.empt()  如果s为空串,则返回true,否则false

s.size()   返回s中字符的个数

s[n]   返回s中位置为n的字符,位置从0开始

s1+s2 把s1和s2连接成一个新字符串,返回新生产的字符串

s1 = s2 把s1的类容替换为s2的副本

v1 == v2 比较v2 v1的内容,相等返回true 否则返回false


string::size_type类型

 string类类型和其他类类型一样,都定义了一些配套类型。通过这些配套类型,库类的使用就与机器无关。这里的string::size_type实际为unsinged 类型。 一般编程过程中最好使用这样的配套类型 可以是代码更加规范。


 string赋值

为了将标准类型尽量设计得和基本数据类型一样方便易用,因此大多数库类型支持赋值操作。对string来说可以将一个string对象赋值给另一个string对象

string s1, s2 = "the expense of spirit";st1 = st2; 
赋值后st1 就包含st2的一个副本。大多数时候赋值等操作会遇到一些 效率上的问题,但值得注意的是从概念上讲,赋值必须先把st1占用的内存释放然后在分配给st1足够存放st2副本的空间,最后把st2赋值到新分配的内存空间。


string对象中的字符处理
适用于 string 对象的字符(或其他任何 char 值)。这些函数都在 cctype 头

文件中定义。
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。
125
表中的大部分函数是测试一个给定的字符是否符合条件,并返回一
个 int 作为真值。
如果测试失败,
则该函数返回 0 ,
否则返回一个
(无意义的)
非 0 ,表示被测字符符合条件。
表中的这些函数,可打印的字符是指那些可以表示的字符,空白字符则是空
格、制表符、垂直制表符、回车符、换行符和进纸符中的任意一种;标点符号则
是除了数字、字母或(可打印的)空白字符(如空格)以外的其他可打印字符。
这里给出一个例子,运用这些函数输出一给定 string 对象中标点符号的个
数:
string s("Hello World!!!");
string::size_type punct_cnt = 0;
// count number of punctuation characters in s
for (string::size_type index = 0; index != s.size(); ++index)
if (ispunct(s[index]))
++punct_cnt;
cout << punct_cnt
<< " punctuation characters in " << s << endl;
这个程序的输出结果是:
3 punctuation characters in Hello World!!!














0 0
原创粉丝点击