STL是c++标准函数库
其中string是字符串类型(一种可变长度的字符序列)头文件
字符串是对象
下面列举string的一些操作(初始化、复制、比较、连接、查询字符串长度、判断字符串是否为空、访问字符串中的单个字符)
#include <iostream>
#include <string>
using namespace std;
int main(){
string s1, s2; //创建两个空字符串对象
string s3 = "Hello, World!"; //创建s3,并初始化
string s4("I am");
s2 = "Today"; //赋值
s1 = s3 + " " + s4; //字符串连接
s1 += " happy "; //末尾追加
cout << s1 + s2 + "!" <<endl; //输出字符串内容
cout<<"length of s1 is :"<<s1.size()<<endl;
//逐个输出s1中的字符
for(int i=0;i<s1.size();i++)
cout<<s1[i]<<" ";
}
string的常用操作
os<<s 将s写到输出流os中,返回os
is>>s 从输入流is读取字符串赋给s,字符串以空白分隔,返回is
getline(is,s) 从输入流is中读取一行赋给s,返回is
s.empty() s为空返回true,否则返回false
s.size() 返回s中字符的个数
s[n] 返回s中第n个字符的引用,位置n从0开始计
s.c_str() 转换,返回s中内容对应的c风格字符串首地址
s1=s2 赋值,用s2的副本替换s1原来的内容
s1+s2 连接,返回s1和s2连接后的结果
s1+=s2 追加,把s2的内容追加到s1后面
s1==s2 如果s1和s2中的字符完全一样,则相等
s1!=s2 string对象的比较对字母区分大小写
<,<=,>,>= 利用字符在字典中的顺序进行比较,字母区分大小写
1.读写string类型
- 用循环读取未知数量的string对象
输入操作符返回输入流对象,如果输入流对象处于有效状态,表示没有遇到文件结束或非法输入
string word;
while(cin>>word) //cin有返回值,当无效输入时结束循环
cout<<word<<endl;
- getline()函数
两个参数:输入流对象和存放读入字符串的string对象
从指定输入流中读取内容,遇到换行符为止
string line;
while(getline(cin,line))
cout<<line<<endl;
2.判断string对象是否为空
empty()函数判断string对象是否为空,返回一个布尔值
string line;
while(getline(cin,line))
if(!line.empty())
cout<<line<<endl;
3.获取string对象的长度
size()函数返回string对象的长度,即对象中字符的个数
string line;
while(getline(cin.line))
if(line.size()>80)
cout<<line<<endl;
4.比较string对象
用关系运算符比较两个字符串对象(依照字典序)(运算符的重载)
string s1="hello";
string s2="hello world"; //s2>s1
string s3="Hello" //s3<s1,s3<s2
5.string对象的赋值和连接
允许把一个string对象的值赋给另一个string对象,也可以为string对象夫一个字符串字面值常量
string s1="hello",s2;
s2=s1;
s1="hello,world!";
6.随机访问string中的字符
用下标运算符可以访问string对象中指定位置的字符
string对象s的下标范围从0到s.size()-1
#include <iostream>
#include <string>
#include <cstddef>
using namespace std;
int main(){
const string hexdigits = "0123456789ABCDEF";
cout << "Enter a numbers between 0 and 15: " << endl;
string::size_type n;
cin >> n;
if (n < hexdigits.size()) //检查下标范围
cout <<"Hex number is: "<< hexdigits[n] << endl;
else
cout <<"Invalid input." << endl;
}
可以利用string进行2进制与16进制的转换
二进制转换为十六进制
二进制转换为十六进制就是将二进制每四位二进制为一组,其他与八进制转换为二进制一样。
十六进制转换为二进制
只要需要将十六进制的每一个数用四位二进制表示,然后相连即可。
设计一个string数组
string[16]={1,2,3,4,5,6,7,8,9,A,B,C,D};