STL—string

    xiaoxiao2021-03-26  13

    同时转载另一篇《string类成员函数详解》

    导入头文件 #include <string>,标准库string类型表示可变长的字符序列。

    1、定义和初始化

    string s1; //默认初始化,s1为空串 string s2(s1); //将s2初始化为s1的一个副本 string s2 = s1; //同上 string s3("val"); //将s3初始化一个字符串面值副本 string s3 = "val"; //同上 string s4(n,'c'); //将s4 初始化为由连续n个字符'c'组成的串

    2、string对象的操作

    os<<s; //将s写入到输出流os中,返回os对象 is>>s; //从is中读取字符串赋值给s,返回is对象 getline(is,s); //从is中读取一行赋值给s,返回is s.empty() //为空返回true,否则返回false s.size() //返回字符串中字符个数 +,=,==,!,<,<=,>,>= //连接、比较操作

    在读操作中需要注意: (1)cin>>s; 自动忽略开头的空白(空格符、换行符、制表符等),只读取有效字符直到遇到下一处空白。 (2)getline(cin,s); 从给定的输入流中读取字符,直到遇到换行(此时换行符也被读进来)。将所读的内容存入string对象中(此时不存换行符)。 (3)getline(cin,s,’a’); 读入操作直到‘a’结束,其中任何字符包括’\n’都能够读入。

    s.size()的返回类型 size函数的返回类型是string::size_type。这种类型表示的是一个无符号类型的值,并且能够存放下任何string对象的大小。

    3、string对象中字符的处理(头文件cctype)

    isalnum(c) //如果c是字母或数字,返回 true isalpha(c) //如果c是字母,返回true iscntrl(c) //c是控制符,返回true isdigit(c) //如果c是数组,返回true isgraph(c) //如果c不是空格,则可打印,,则为true islower(c) //如果c是小写字母,则为true isupper(c) //如果c是大写字符,则为true isprint(c) //如果c是可打印的字符,则为true ispunct(c) //如果c是标点符号,则为true isspace(c) //如果c是空白字符,则为true isxdigit(c) //如果c是十六进制数,则为true tolower(c) //如果c是大写字符,则返回其小写字母,否则直接返回c toupper(c) //跟tolower相反

    4、string对象中一些函数

    (1)插入

    s.insert(int n,char p); //把字符串p插入到n的位置 s.insert(p,n,t); //迭代器p元素之前插入n个t的副本 s.insert(p,b,e); //迭代器p元素之前插入迭代器b到e之间的所有元素 s.insert(p,s2,poe2,len); //在下标p之前插入s2下标从poe2开始长度为len的元素 s.insert(pos,cp,len); //下标pos之前插入cp数组的前len个元素。

    (2)替换

    s.assign(b,e); //用迭代器b到e范围内的元素替换s s.assign(n,t); //用n个t的副本替换s a.assign(s1,pos2,len);//从s1的下标pos2开始连续替换len个。 s.replace ( 3 , 3 , " good " ) ; //从第三个起连续三个替换为good

    (3)截取字串

    s.substr(i,j) //截取s串中从i到j的子串

    (4)删除

    s.erase( it )||s.erase ( first , second ) ; //删除迭代器或迭代器范围的字符

    (5)其他函数

    s.find ( " cat " ) ; //超找第一个出现的字符串”cat“,返回其下标值,查不到返回 4294967295,也可查找字符; s.append(args); //将args接到s的后面 s.compare ( " good " ) ; //s与”good“比较相等返回0,比"good"大返回1,小则返回-1; reverse ( s.begin(), s.end () ); //反向排序函数,即字符串反转函数

    5、string对象与数值的相互转换

    sstream头文件包含ostringstream、istringstream、stringstream这三个子类。

    istringstream类用于执行C++风格的串流的输入操作。 ostringstream类用于执行C风格的串流的输出操作。strstream类同时可以支持C风格的串流的输入输出操作。 #include <iostream> #include <string> #include <sstream> using namespace std; //c++方法:将数值转换为string string convert_to_string(double x) { ostringstream o; if(o << x) return o.str(); return "conversion error"; } //c++方法,将string转化为数值 double convert_from_string(const string &s) { istringstream i(s); double x; if(i >> x) return x; return 0.0; } int main(int argc,char *argv[]) { string cc=convert_to_string(1976); cout<<cc<<endl; string dd="115165"; int p=convert_from_string(dd)+2; cout<<p<<endl; return 0; }
    转载请注明原文地址: https://ju.6miu.com/read-450280.html

    最新回复(0)