1. string支持的几个构造函数:
string s1; | 默认构造函数,s1为空串 |
string s2(s1); | 将s2初始化为s1的一个副本 |
string s3("value"); | 将s3初始化为一个字符串字面值副本 |
string s4(n,'c'); | 将s4初始化为'c'的n个副本 |
========================================================================
例子:s1和s2的值是多少?
#include <iostream>
#include <string>
using namespace std;
string s;
int main()
{
string s1;
cout << "s: " << s << endl;
cout << "s1: " << s1 << endl;
return 0;
}
*******************************************************************
结果:均为空字符串
s:
s1:
*******************************************************************
========================================================================
2. string类的读写
2.1 从标准输入读取string,并将读入的串存储在s中。string类型的输入操作符:
2.1.1 读取并忽略开头所有的空白字符(如空格、换行符、制表符等);
2.1.2 读取字符直至再次遇到空白字符,读取终止。
******************************************************************
例子:
<span style="font-size:18px;"><span style="font-size:18px;">#include <iostream>
#include <string>
using namespace std;
int main()
{
string s1;
cin >> s1;
cout << "s1: " << s1 << endl;
return 0;
}</span></span>
结果:
输入为 " hello world "
输出为 "hello"
******************************************************************
2.2 getline函数
getline(istream &in, string &s)
从输入流读入一行到string s
•功能:
–从输入流中读入字符,存到string变量
–直到出现以下情况为止:
•读入了文件结束标志
•读到一个新行
•达到字符串的最大长度
–如果getline没有读入字符,将返回false,可用于判断文件是否结束
=====================================================
注意:由于getline函数返回时丢弃换行符,换行符将不会存储在string对象中。
=====================================================
3. string 的操作:
s.empty() | 如果s为空串,则返回true,否则返回false |
s.size() | 返回s中字符的个数 |
s[n] | 返回s中位置为n的字符,位置从0开始计数 |
s1+s2 | 把s1和s2连接成一个新字符串,返回新生成的字符串 |
s1 = s2 | 把s1内容替换为s2的副本 |
v1 == v2 | 比较v1与v2的内容,相等则返回true,否则返回false |
!= < <= | 保持这些操作符惯有的含义 |
> >= | 保持这些操作符惯有的含义 |
3.1 s.size() 返回值的类型为:string::size_type类型。注意:不要将其返回值赋值给int型。
3.2 +
当进行string对象和字符串字面值混合连接操作时,+操作符的左右操作数必须至少有一个是string类型的。
注意字符串字面值是常量。
3.3 s[n]
引用下标是从0开始的。并且超出下标应用范围,将溢出。可计算下标值,例如:s[n1+n2] n1、n2:整型
3.4 string对象中字符的处理
这些函数都在cctyoe头文件中定义
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 |
isupper(c) | 如果c是大写字母,则为true |
tolower(c) | 如果c是大写字母,则返回其小写字母形式,否则直接返回c |
toupper(c) | 如果c是小写字母,则返回其大写字母形式,否则直接返回c |
isxdigit(c) | 如果c是十六进制,则为true |
isspace(c) | 如果c是空白字符,则为true |