STL—string

同时转载另一篇《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;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值