C++中的标准库类型——string
2017-03-28 13:57
501 查看
string
标准库类型string是一种可变长的字符序列。string定义在std命名空间中。在使用string前,需要:#include<string> using std::string;
一、声明与定义
string name;
二、初始化
string s1; // 默认初始化,空序列 string s2(s1); string s3 = s1; string s4 ("aaa"); // 字面值初始化最后存在的一个空字符会被丢弃 string s5 = "aaa"; string s6 (4 , 'a'); //由4个a组成字符序列进行初始化 string s( cp, n); //s是cp指向的数组中前n个字符的拷贝,此数组至少包含n个字符 string s(s2 , pos2); // s是string s2从下标pos2开始的字符的拷贝,若是pos2>s2.size(),则此行为为定义。 string s(s2 , pos2 , len2);//s是从s2下标pos2开始的len2个字符的拷贝。
三、方法
1、字符序列的读写os << s; //将s写到输入流当中,返回os,这样意味着可以多个s可以连续输出,即: os << s1 << s2; is >> s; //将s读到字符序列当中,字符序列之间以空白作为分隔,返回is。这样意味着可以多个s可以连续输入,即: is >> s1 >> s2; getline( is , s); //读取一行,保留空白,直到遇到换行符,注意换行符也是一个空白,会被保留在执行读取的操作中,string对象会自动的忽略开头的空白(空格符、换行符、制表符等)并从第一个非空白的字符读取,直到遇到下一个空白。
2、empty和size操作
s.empty();//根据string对象是否为空返回一个bool类型的值 s.size();//返回string对象的长度,即其中字符的个数关于 string::size_type 类型: size 函数返回的是这种类型,并不是一般的 int 或者 unsigned 类型。它是一个无符号类型的值而且足够放下任何 string 对象的大小。对于表达式中存在无符号数需要警惕! 可以使用关键字 auto 或者 decltype 来推断数据的类型。
3、大小比较
//利用字符在字典中的顺序进行比较,并且对大小写敏感 s1 == s2; s1 != s2; s1 <= s2; s1 < s2; s1 >= s2; s1 > s2; s.compare(args);//具有多种参数形式关于字符序列的大小比较:
a)如果两个 string 对象的长度不同,而且较短的 string 对象的每个字符都与较长的 string 对象对应位置上的字符相同,就认为较短 string 对象小于较长 string 对象。即:如果一个是另一个的子集(该说法可能不准确),则认为是一个小于另一个。
b)如果两个 string 对象在某些位置上不一样,则 string 对象的比较结果其实就是 string 对象中的第一个不同字符的比较结果。
4、字符序列查找
//arg的形式([c , pos]、[s2 , pos]、[cp , pos]、[cp , pos , n]) s ;//字符序列中第n个字 s.find(args);//查找s中args第一次出现的位置 s.rfind(args);//查找s中args最后一次出现的位置 s.find_first_of(args);//在s中查找args中任何一个字符第一次出现的位置 s.find_last_of(args);//在s中查找args中任一字符最后一次出现的位置 s.find_first_not_of(args);//在s中查找第一个不在args中的字符 s.find_last_not_of(args);//在s中查找最后一个不再args中的字符
5、修改
//args的形式:[str],[str,pos,len],[cp,len],[cp],[n,c],[b,e],[初始化列表] s1 = s2;//赋值 s1 + s2;//两个字符序列可以直接相加 s.insert(pos , args);//在pos之前插入args指定的字符 s.erase(pos , len);//删除从pos开始的len个字符 s.assign(args);//将s中的字符替换为args指定的字符 s.append(args);//在s的末尾追加args s.replace(range , args);//删除s中范围range内的字符,替换为args指定的字符修改操作中的操作很多函数是可以重载的。函数的返回方式依赖于输入参数的设定,并不是所有的函数可以使用所有的参数方式。
6、字符处理
//定义在头文件cctype中 isalnum(c);//当c是字母或者数字时返回真 isalpha(c);//当c是字母时返回真 isdigit(c);//当c为数字时返回真 isxdigit(c);//当c为十六进制时为真 iscntrl(c);//当c是控制字符时返回真 isgraph(c);//当c不是空格但可以打印时返回真 isprint(c);//当c是可以打印字符时返回真(即c是空格或者有可视形式) islower(c);//当c是小写字母时返回真 isupper(c);//当c是大写字母时返回真 ispunct(c);//当c是标点符号时返回真 isspace(c);//当c是空白时返回真 tolower(c);//输出c的小写字母形式 toupper(c);//输出c的大写字母形式
相关文章推荐
- C++ ->Chapter3 标准库类型之读入未知数目的string 对象
- C++学习(一)——标准库类型之string全解析
- C++ ->Chapter3 标准库类型之string 类型
- C风格字符串和C++的标准库类型string的比较
- C++学习笔记(二)(标准库string类型)
- c++ 标准库string类型
- C++ 标准库 string类型(二)
- C++之标准库类型string(g++)
- c++ 标准库string类型
- C++基础编程----2.2标准库类型string
- c++之标准库类型string
- C++ 标准库 string类型(一)
- C++基础的不能再基础的学习笔记——标准库类型string
- c++(19)标准库类型string( 一 )
- C++基础<03>—标准库string类型
- C/C++学习笔记33:C++中标准库string类型
- C++ primer: C++中string标准库类型
- C++ 标准库 string类型(三)
- 关注C++细节——标准库string类型
- C++ int类型和string类型的相互转换