(一)在使用之前是需要声明的。使用标准库类型string
#include<string>
using std::string;
或者using namespace std;
(二)几种初始化
string s1;//empty string on defaulty
string s2(s1);
string s3="hiya"
string s4(10,'c');cccccccc
(三)string对象上的操作
os<<s;将写到输出流os中,并且返回os;
is>>s 从is中读取字符串并返回流
getline(is,s)读取一行,返回流
s.empty()判断是否是空
s.size()返回s中字符个数,注意返回的类型是unsigned,不能够与int类型来比较。有符号和无符号的比较是需要转换的,而且答案都是令人想不到的。哈哈
s[n] 返回s中第n个字符的引用,位置n从0记起
s1+s2;返回s1和s2链接后的结果
s1=s2;直接的赋值操作哦
s1==s2;判断是否完全相等
<,>,<=,>=。都是返回第一个不同的大小比较值
(四)字面值和string对象的相加
+号的两边都必须是至少有一个string对象
string s4=s1+",";
string s5="hello"+“《”;
string s6=s1+","+"wsf";对的,相当于(s1+",")+"sfh";这个前面的结果是一个对象来的
string s7="heello"+"hfh"+s2;前面都是字面值,所一错误
切忌:字符串字面值与string是不同类型的,单纯的字面值是无法相加的。(五)
cctype头文件的函数
isalnum(c)
假如c是字母或数字,则为true | |
isalpah(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。 |
(六)使用for循环来遍历;
string str("some string");
for(auto c:str)
cout << c << endl;
for(auto &c:s)
c=toupper(c);
cout <<s <<endl;//c是一个引用,因此赋值语句将改变s中字符串的值,<span style="color:#FF9900;">如果不用这个引用的话,c只是s中字符的一份复制的值,它的改变并不会影响s原本的字符。</span>
注意以上的编译都是需要在编译中添加-std c++11 这个编译的语句,可能这个是c++11的新特性吧