表示可变长的字符序列。
基础使用
1.必须包含头文件string
2.(可选)using声明——声明后在代码中可以直接使用string,否则需使用std::string,以便编译器能够从std命名空间中找到string.
#include <string>
using std::string
3.初始化(默认初始化 or 显式初始化)
//default initialization-------空字符串
string s1;
//direct initialization-------不使用等号
string s2(s1);
string s3("value");
string s4(10, 'c');
//copy initialization--------使用等号
string s5 = s1;
string s6 = "value";
string s7 = string(10, 'c')
//其中s2-s4与s5-s7对应的初始化结果相同
//"value"叫做字符串字面值,可用于初始化string
4.对string对象的基本操作
//写入到输出流os
os<<s;
//从输入流is中读取
is>>s;
//读取一行,且保留输入时的空白符
getline(is, s);
//判断是否为空,返回布尔值
s.empty();
//返回string中字符的个数,其返回值类型是string::size_t;无符号整型数,切忌混用无符号与有符号数
s.size();
//返回第n个字符的引用,n属于0到s.size()-1
s[n];
//字符串相连,返回相连结果
s1 + s2;
//字符串比较,大小写敏感,返回布尔值
s1 == s2;
s1 != s2;
//按照字符字典顺序
s1 <= s2;
s1 >= s2;
s1 < s2;
s1 > s2;
读取string对象
1.使用IO操作,可连续读入。
#include <iostream>
#include <string>
using std::string;
using std::cin;
using std::cout;
using std::endl;
//使用cin读入,再使用cout读出
//忽略开头空白,遇到下一个空白停止
//读取结果不会包含空白
int main(){
string s;
cin >> s;
cout << s << endl;
string s2, s3;
cin >> s2 >> s3;
cout << s2 << s3 <<endl;
}
输出结果:
A. 省略掉了开头的一长串空白
B. 遇到空白即停止读入
C. 我们可以发现我们只输入了一次,由此可知:
在读入s时,第一次遇到Hello后的空白就停下了,但是剩余内容还留在输入流中。
读取s2, s3时,直接读取了剩余在输入流中的字符串。
读取s2,遇到World后面的空格再次停止读入,开始读取s3。
读取s3,遇到!后的空格再次停止读入。
2. 使用getline读取一整行
读取内容,知道遇到换行符。
将会保留输入时的空白符。换行符将被读入,但不会被存储到string对象中。
#include <iostream>
#include <string>
using std::string;
using std::cin;
using std::cout;
using std::endl;
int main(){
string line;
while(getline(cin, line))
cout << line << endl;
}
输出结果:
保留了所有空白符。
字符串字面值和string对象相加
必须确保每个加法运算符(+)的两侧运算对象至少有一个string
正确:string s1 = s + "," + "world";
错误:string s2 = "hello" + "," + s;
原因:左结合律
头文件<cctype>
包含大小写转换以及判断等问题的函数声明
1. isalpha() 用来判断一个字符是否为字母,如果是字符则返回非零,否则返回零。
2. isalnum() 用来判断一个字符是否为数字或者字母,也就是说判断一个字符是否属于a~z||A~Z||0~9。
3. islower() 用来判断一个字符是否为小写字母,也就是是否属于a~z。
4. isupper()用来判断一个字符是否为大写字母。
5. tolower() 函数是把字符串都转化为小写字母。
6. toupper() 函数是把字符串都转化为大写字母。
练习题
1. 编写一段程序从标准输入中一次读入一整行,然后修改该程序使其一次读入一个词。
#include <iostream>
#include <math.h>
#include <string>
using std::string;
using std::cin;
using std::cout;
using std::endl;
int main() {
//读取一整行
string line;
getline(cin, line);
cout << line << endl;
//一个单词一个单词得读取
string word;
while(cin >> word){
cout << word << endl;
}
}