(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. CSS中那些必须掌握的概念

    一.盒子模型 1.什么是盒子模型 css盒模型本质上是一个盒子,封装周围的html元素,它包括:外边距(margin).边框(border).内边距(padding).实际内容(content)四个属 ...

  2. Python 实现短信轰炸机

    原理其实很简单,就是利用selenium包打开各种网站的注册页,输入轰炸的号码,实现轰炸.其实也算是利用了注册漏洞.申明:仅娱乐使用,禁止️用于非法用途!若用于非法用途,后果及法律责任博主一律不承担 ...

  3. SpringBoot + MyBatis + MySQL 读写分离实战

    1. 引言 读写分离要做的事情就是对于一条SQL该选择哪个数据库去执行,至于谁来做选择数据库这件事儿,无非两个,要么中间件帮我们做,要么程序自己做.因此,一般来讲,读写分离有两种实现方式.第一种是依靠 ...

  4. 好看css搜索框样式_分享8款纯CSS搜索框

    最简单实用的CSS3搜索框样式,纯CSS效果无需任何javascript,其中部分搜索框在点击的时候有动画特效,搜索框的应用也是比较普通的,效果如下: 设计网站大全https://www.wode00 ...

  5. 赞!7000 字学习笔记,一天搞定 MySQL

    MySQL数据库简介 MySQL近两年一直稳居第二,随时有可能超过Oracle计晋升为第一名,因为MySQL的性能一直在被优化,同时安全机制也是逐渐成熟,更重要的是开源免费的. MySQL是一种关系数 ...

  6. 洛谷 P3574 [POI2014]FAR-FarmCraft

    题目传送门 题目描述 输入输出格式 输入格式: 输出格式: 一行,包含一个整数,代表题目中所说的最小时间. 输入输出样例 样例输入 样例输出 提示 分析 我们设f[x]为遍历完以x为根的子树且将这棵子 ...

  7. DVWA学习记录 PartⅢ

    CSRF 1. 题目 CSRF,全称Cross-site request forgery,翻译过来就是跨站请求伪造,是指利用受害者尚未失效的身份认证信息(cookie.会话等),诱骗其点击恶意链接或者 ...

  8. electron设置window系统托盘

    electron设置托盘 // 设置系统托盘 const setAppTray = () => { // 托盘对象 var appTray = null // 系统托盘右键菜单 var tray ...

  9. python数据处理(七)之数据探索和分析

    1.探索数据 1.1 安装agate库 1.2 导入数据 1.3 探索表函数 a.排序 b.最值,均值 c.清除缺失值 d.过滤 e.百分比 1.4 连结多个数据集 a.捕捉异常 b.去重 c.缺失数 ...

  10. java 数据结构(七):Collection接口

    1.单列集合框架结构|----Collection接口:单列集合,用来存储一个一个的对象* |----List接口:存储序的.可重复的数据. -->“动态”数组* |----ArrayList. ...