(C++递归预习到了string类型,这个是处理字符串的一个非常好用的东西,在C里面没有.今天来学习一下)

顺便推荐一个很不错的网站:http://c.biancheng.net/view/400.html

首先,为了在程序中使用string类型,必须包含头文件 <string>。如下:

#include <string>

(注意这里不是string.h,string.h是C字符串头文件。)

string类是一个模板类,位于名字空间std中,通常为方便使用还需要增加:

using namespace std;

声明一个字符串变量很简单:

string str;

一.对象赋值:

  string str;  //定义了一个空字符串str

     str = "Hello world";   // 给str赋值为"Hello world"

     char cstr[] = "abcde";  //定义了一个C字符串

     string s1(str);       //调用复制构造函数生成s1,s1为str的复制品

     cout<<s1<<endl;

     string s2(str,);     //将str内,开始于位置6的部分当作s2的初值

     cout<<s2<<endl;

     string s3(str,,);  //将str内,开始于6且长度顶多为3的部分作为s3的初值

         cout<<s3<<endl;

     string s4(cstr);   //将C字符串作为s4的初值

     cout<<s4<<endl;

     string s5(cstr,);  //将C字符串前3个字符作为字符串s5的初值。

     cout<<s5<<endl;

     string s6(,'A');  //生成一个字符串,包含5个'A'字符

     cout<<s6<<endl;

     string s7(str.begin(),str.begin()+); //区间str.begin()和str.begin()+5内的字符作为初值

     cout<<s7<<endl;

     return ;

输出:

Hello world


world


wor


abcde


abc


AAAAA


Hello


二.比较

好不容易把各种string赋上你想要的值,现在我们开始比较.

string类型支持><+==这些字符串里根本做不到的比较.

  string str;

     cout << "Please input your name:"<<endl;

     cin >> str;

     if( str == "Li" )   // 字符串相等比较

         cout << "you are Li!"<<endl;

     else if( str != "Wang" )  // 字符串不等比较

         cout << "you are not Wang!"<<endl;

     else if( str < "Li")     // 字符串小于比较,>、>=、<=类似

         cout << "your name should be ahead of Li"<<endl;

     else

         cout << "your name should be after of Li"<<endl;

     str += ", Welcome!";  // 字符串+=

     cout << str<<endl;

     for(int i =  ; i < str.size(); i ++)

         cout<<str[i];  // 类似数组,通过[]获取特定的字符

     return ;

三.特性函数

string有很多它自己的函数

int capacity()const;    //返回当前容量(即string中不必增加内存即可存放的元素个数)

int max_size()const;    //返回string对象中可存放的最大字符串的长度

int size()const;        //返回当前字符串的大小

int length()const;       //返回当前字符串的长度

bool empty()const;        //当前字符串是否为空

void resize(int len,char c);  //把字符串当前大小置为len,多去少补,多出的字符c填充不足的部分

用的时候:

str.capacity=...

代码:

     string str;

         if (str.empty())//判断是不是空的

         cout<<"str is NULL."<<endl;

         else

         cout<<"str is not NULL."<<endl;

     str = str + "abcdefg";//string可以直接加

     cout<<"str is "<<str<<endl;

         cout<<"str's size is "<<str.size()<<endl;//   str's size is 7(size 是字符数,类似strlen)

        cout<<"str's capacity is "<<str.capacity()<<endl;//str's capacity is 15  

     cout<<"str's max size is "<<str.max_size()<<endl;//str's max size is 4294967294

     cout<<"str's length is "<<str.length()<<endl;//str's length is 7 (其实和size是一样的)

     str.resize(,'c');(20个字符,空位补c)

     cout<<"str is "<<str<<endl;//str is abcdefgccc

     str.resize();(5个字符,多的删掉)

     cout<<"str is "<<str<<endl;//str is abcde

     return ;
 #include <iostream>
#include <string> using namespace std;
int main()
{
string str1 = "abc123defg";
string str2 = "swap!";
cout<<str1<<endl;
cout<<str1.erase(,)<<endl;
//从索引3开始的3个字符,即删除掉了"123"
cout<<str1.insert(,"")<<endl;
//在头部插入
cout<<str1.append("")<<endl;
//append()方法可以添加字符串
str1.push_back('A'); //push_back()方法只能添加一个字符
cout<<str1<<endl;
cout<<str1.replace(,,"hello")<<endl;
//即将索引0开始的3个字符替换成"hello"
cout<<str1.substr(,)<<endl;
//从索引5开始7个字节
str1.swap(str2);
cout<<str1<<endl;
const char* p = str.c_str();
printf("%s\n",p);
return ;
}

string类型 C++的更多相关文章

  1. ElasticSearch 5学习(9)——映射和分析(string类型废弃)

    在ElasticSearch中,存入文档的内容类似于传统数据每个字段一样,都会有一个指定的属性,为了能够把日期字段处理成日期,把数字字段处理成数字,把字符串字段处理成字符串值,Elasticsearc ...

  2. 每日一记-mybatis碰到的疑惑:String类型可以传入多个参数吗

    碰到一个觉得很疑惑的问题,Mybatis的parameterType为String类型的时候,能够接收多个参数的吗? 背景 初学Mybatis的时候,看的教程和书籍上都是在说基本的数据类型如:int. ...

  3. C#string类型总结

    字符串的特性:不可变性,每对字符串做拼接或者重新赋值之类的操作,都会在内存中产生一个新的实例.  所以说,在.Net平台下,如果你对一个字符串进行大量的拼接赋值等操作,会产生大量的垃圾.    --- ...

  4. 把《c++ primer》读薄(3-1 标准库string类型初探)

    督促读书,总结精华,提炼笔记,抛砖引玉,有不合适的地方,欢迎留言指正. 问题1:养成一个好习惯,在头文件中只定义确实需要的东西 using namespace std; //建议需要什么再using声 ...

  5. 【原创】Java和C#下String类型中的==和equals的原理与区别

    一.Java下 1.几个例子 public static void main(String[] arge) { String str1 = new String("1234"); ...

  6. String类型的属性和方法

    × 目录 [1]属性 [2]对象通用方法 [3]访问字符方法[4]字符串拼接[5]创建子串方法[6]大小写转换[7]查找子串位置[8]正则匹配方法[9]去除首尾空格[10]字符串比较 前面的话 前面已 ...

  7. String类型传值以及对象传值

    package Virtual; class Stan{ String mm = "hello"; } class Virtual { public static void mai ...

  8. java动手动脑和课后实验型问题String类型

    1.请运行以下示例代码StringPool.java,查看其输出结果.如何解释这样的输出结果?从中你能总结出什么? true true false 总结: 使用new关键字创建字符串对象时, 每次申请 ...

  9. java内存分配和String类型的深度解析

    [尊重原创文章出自:http://my.oschina.net/xiaohui249/blog/170013] 摘要 从整体上介绍java内存的概念.构成以及分配机制,在此基础上深度解析java中的S ...

  10. javascript类型系统——字符串String类型

    × 目录 [1]定义 [2]引号 [3]反斜线[4]特点[5]转字符串 前面的话 javascript没有表示单个字符的字符型,只有字符串String类型,字符型相当于仅包含一个字符的字符串 字符串S ...

随机推荐

  1. Redis系列(八):发布与订阅

    Redis的发布与订阅,有点类似于消息队列,发送者往频道发送消息,频道的订阅者接收消息. 1. 发布与订阅示例 首先,在本机开启第1个Redis客户端,执行如下命令订阅blog.redis频道: SU ...

  2. JavaScript基础对象创建模式之沙盘模式(026)

    沙盘模式可以弥补命名空间模式中的两项不足之处: 使用唯一全局对象作为程序的全局变量入口,使得无法在同一程序中使用两个不同版本的API,因此它们使用的是同一个唯一的全局对象名,如MYAPP: 较长的嵌套 ...

  3. python 批量重命名文件

    # -*- coding: utf-8 -*- import os import sys def rename(): path = input("路径(例如D:\\\\picture):&q ...

  4. Mariadb之半同步复制集群配置

    首先我们来了解下在mariadb/mysql数据库主从复制集群中什么是同步,什么是异步,什么是半同步:所谓同步就是指主节点发生写操作事件,它不会立刻返回,而是等到从节点接收到主节点发送过来的写操作事件 ...

  5. 【API进阶之路6】一个技术盲点,差点让整个项目翻车

    上次教了实习生一个方案之后,这小子跟运营妹子的关系是越走越近,时不时地撒把狗粮,在我司真正实现了研发运营一家亲~(上回你没看?戳上文剧情回顾:万万没想到,一个技术方案帮实习生追到了运营妹子) 这回想跟 ...

  6. Windows 用来定位 DLL 的搜索路径

    参考自:https://msdn.microsoft.com/zh-cn/library/253b8k2c.aspx 通过隐式和显式链接,Windows 首先搜索“已知 DLL”,如 Kernel32 ...

  7. JavaScript图形实例:随机SierPinski三角形

    在“JavaScript图形实例:SierPinski三角形”中,我们介绍了SierPinski三角形的基本绘制方法,在“JavaScript图形实例:迭代函数系统生成图形”一文中,介绍了采用IFS方 ...

  8. pytest框架使用教程

    Pytest框架 一.简介 pytest:基于unittest之上的单元测试框架 有什么特点? 自动发现测试模块和测试方法 断言更加方便,assert + 表达式,例如 assert 1 == 1 灵 ...

  9. 安装nodejs,npm,yarn

    先安装nodejs和npm sudo apt update sudo apt install nodejs npm #验证一下 nodejs --version npm --version 如果nod ...

  10. 关于flask(前后端分离)的后端开发的小白笔记整理(含postman,jwt,json,SQLAlchemy等)

    首先是提醒自己的一些唠嗑: 学会劳逸结合,文档看累了可以看视频,动手操作很关键,遇到问题先动脑子冷静地想,不要跟着步骤都不带脑子,想不出来了再查一查!有时候打出来的代码很虚,但是实践不花钱,实践出真知 ...