(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. 谈谈javaSE中的==和equals的联系与区别

    前言 ==和equals是我们面试中经常会碰到的问题.那么它们之间有什么联系和区别呢?今天我们就来聊聊吧! 问题 这里先抛出一些比较典型笔试问题: int x = 10; int y = 10; St ...

  2. 《UNIX环境高级编程》(APUE) 笔记第十二章 - 线程控制

    12 - 线程控制 GitHub 地址 1. 线程限制 下图为与 线程操作 有关的一些 限制: 可以通过 sysconf 函数进行查询 . 2. 线程属性 可使用 pthread_attr_t 结构修 ...

  3. linux下 解释 终端命令 ls -al或者ls -li 输出的信息

    $ ls -al            drwxr-xr-x.            wjshan0808    wjshan0808        Sep :    .cache $ ls -li ...

  4. Linux必须要掌握的命令

    Linux必须要掌握的命令 文件目录操作命令 ls 命令格式:ls [选项] [目录名] 命令功能:列出目标目录中所有的子目录和文件 常用参数:-a,-l,-R, 例1:列出/home/peidach ...

  5. HotSpot项目结构

    之前已经介绍了在Ubuntu 16.04上编译OpenJDK8的源代码和调试HotSpot源代码.这一章将介绍HotSpot项目的目录结构. HotSpot目录下主要由agent.make.src和t ...

  6. Azure Data Box

    一,引言 最近博主又要面临考试了,随笔又再次缓慢更新,说起考试,之前在微软的 ms learn的课程上有接触到一个叫 Azure Data Box的,刚好今天也花了一个多小时看了一下相关文档,下面就正 ...

  7. 分享几个很实用的CSS技巧对前端技术很有帮助

    创建剪切动画 对于剪切动画,使用clip-path代替width/height,避免DOM重排导致性能过低. .animate { width: 200px; height: 200px; backg ...

  8. 快速认识elasticsearch

    快速认识elasticsearch   what is Elasticsearch Elasticsearch被称为"Lucene穿了一件json的外衣"---把Lucene用Ne ...

  9. Spring Boot读取配置文件的几种方式

    Spring Boot获取文件总的来说有三种方式,分别是@Value注解,@ConfigurationProperties注解和Environment接口.这三种注解可以配合着@PropertySou ...

  10. python提取json字符串的值

    json_str={ "actor":"邓超", "age":35, "book":[ "英语", ...