一、前言

int,float,char,C++标准库提供的类型:string,vector。

string:可变长字符串的处理;vector一种集合或者容器的概念。

二、string类型简介

C++标准库中的类型,代表一个可变长的字符串

char str[100] = “I Love China”; // C语言用法

三、定义和初始化string对象

  1. #include <iostream>
  2. #include <string>
  3. using namespace std;
  4.  
  5. int main()
  6. {
  7. string s1; // 默认初始化,s1=””,””空串,表示里面没有字符
  8. string s2 = I Love China”; // 把I Love China 这个字符串内容拷贝到了s2代表的一段内存中,拷贝时不包括末尾的\0;
  9. string s3(“I Love China”); // 与s2的效果一样。
  10. string s4 = s2; // 将s2中的内容拷贝到s4所代表的的一段内存中。
  11.  
  12. int num = ;
  13. string s5 = (num,’a’);// 将s5初始化为连续num个字符的’a’,组成的字符串,这种方式不太推荐,因为会在系统内部创建临时对象。
  14. return ;
  15. }

四、string对象上的操作

(1)判断是否为空empty(),返回的布尔值

  1. string s1;
  2. if(s1.empty()) // 成立
  3. {
  4. cout << s1字符串为空” <<endl;
  5. }

(2)size()/length():返回字节/字符数量,代表该字符串的长度。unsigned int

  1. string s1;
  2. cout << s1.size() << endl; //
  3. cout << s1.length() << endl; //
  4. string s2 = “我爱中国”;
  5. cout << s2.size() << endl;//
  6. cout << s2.length() << endl; //
  7. string s3 = I Love China”;
  8. cout << s3.size() << endl;//
  9. cout << s3.length() << endl; //

(3)s[n]:返回s中的第n个字符,(n是个整型值),n代表的是一个位置,位置从0开始,到size()-1;

如果用下标n超过这个范围的内容,或者本来是一个空字符串,你用s[n]去访问,都会产生不可预测的作用。

  1. string s3 = I Love China”;
  2. if(s3.size()>)
  3. {
  4. cout << s3[] << endl;
  5. s3[] = ‘’;
  6. }
  7. cout << s3 << endl; // I Lowe China

(4)s1+s2:字符串的连接,返回连接之后结果,其实就是得到一个新的string对象。

  1. string s4 = abcd”;
  2. string s5 = efgk
  3. string s6 = s4 + s5;
  4. cout << s6 <<endl;

(5)s1 = s2:字符串对象赋值,用s2中的内容取代s1中的内容

  1. string s4 = abcd”;
  2. string s5 = efgk
  3. s5 = s4;
  4. cout << s5 <<endl; // abcd

(6)s1 == s2:判断两个字符串是否相等。大小写敏感:也就是大小写字符跟小写字符是两个不同的字符。相等:长度相同,字符全相同。

  1. string s4 = abcd”;
  2. string s5 = abcd
  3. if(s5 == s4)
  4. {
  5.   cout << s4 == s5 <<endl; // abcd
  6. }

(7)s1 != s2:判断两个字符串是否不相等

  1. string s4 = abcd”;
  2. string s5 = abcD
  3. if(s5 != s4)
  4. {
  5. cout << s4 != s5 <<endl; // abcd
  6. }

(8)s.c_str():返回一个字符串s中的内容指针,返回一个指向正规C字符串的指针常亮,也就是以\0存储。

这个函数的引入是为了与C语言兼容,在C语言中没有string类型,所以我们需要通过string对象的c_str()成员函数将string对象转换为C语言的字符串样式。

  1. string s4 = abcd”;
  2. const char *p = s4.c_str(); // abcd
  3. char str[];
  4. strcpy_s(str,sizeof(str),p);
  5. cout << str << endl;
  6.  
  7. string s11(str); // 用C语言的字符串数组初始化string类型。

(9)读写string对象

  1. string s1;
  2. cin >> s1; // 从键盘输入
  3. cout << s1 << endl;

(10)字面值和string相加

  1. string str1 = abc”;
  2. string str2 = def”;
  3. string str3 = s1 + and + s2 + e’; // 隐式类型转换
  4. cout << str3 << endl; // abc and defe;
    // string s1 = “abc” + “def”; // 语法上不允许

(11)范围for针对string的使用:C++11提供了范围for:能够遍历一个序列的每一个元素。string可以看成一个字符序列。

  1. string s1 = I Love China”;
  2. for(auto c:s1) // auto:变量类型自动推断
  3. {
  4. cout << c << endl; // 每次输出一个字符,换行
  5. }
  6.  
  7. for(auto &c:s1) // auto:变量类型自动推断
  8. {
  9. // toupper()把小写字符转换为大写,大写字符不变
  10. c = toupper(c); // 因为c是一个引用,所以这相当于改变s1中的值
  11. }
  12. cout << s1 << endl;

string类型介绍的更多相关文章

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

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

  2. String类型的属性和方法

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

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

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

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

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

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

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

  6. String类型,Function类型

    1.String类型:  1)创建String对象:    var str=new String(s);    String(s);    参数:参数 s 是要存储在 String 对象中的值或转换成 ...

  7. java string类型的初始化

    以下基本上是java string类型最常用的三种方法 new string()就不介绍了  基本等同于第三种 String a;  申明一个string类型的 a,即没有在申请内存地址,更没有在内存 ...

  8. java中的堆、栈、常量池以及String类型的两种声明

    参考自http://blog.sina.com.cn/s/blog_798b04f90100ta67.html http://www.cnblogs.com/fguozhu/articles/2661 ...

  9. C++中将string类型转换为int, float, double类型 主要通过以下几种方式:

      C++中将string类型转换为int, float, double类型 主要通过以下几种方式: # 方法一: 使用stringstream stringstream在int或float类型转换为 ...

随机推荐

  1. ICG游戏:证明,先手不是必胜就是必败。

    简介: ICG游戏:Impartial Combinatorial Games,公平的组合游戏. 以下是定义,来自网络,可能不够严谨: 1.两名选手:2.两名选手轮流行动,每一次行动可以在有限合法操作 ...

  2. Linux enca命令

    一.简介 enca是Linux下的文件编码转换工具. 二.安装 http://dl.cihar.com/enca/   http://www.2cto.com/os/201404/295528.htm ...

  3. HBase 强制删除表

    业务系统中有一张表drop不掉了. 可以disable,就是drop不掉. 解决办法: 1.将HDFS上的数据删除或移动 hadoop fs -mv /hbase/<table_name> ...

  4. 20155230 2016-2017-2 《Java程序设计》第七周学习总结

    20155230 2016-2017-2 <Java程序设计>第6周学习总结 教材学习内容总结 世界时:在1972年引入UTC之前,GMT与UT是相同的 格林威治标准时间(GMT),现已不 ...

  5. Docker的安装,配置,更新和卸载

    我们可以在Linux中安装Docker并运行Hello world应用程序.通过下面这些操作,我们将会学到更多有关于Docker的基础特征.我们将会学到如何: 安装Docker引擎 在一个容器中运行软 ...

  6. awk基础02-变量-分隔符-数组

        对任意一门语言都会有变量,在awk中变量分为内置变量和自定义变量. 内置变量:就是预先在awk中定义好的,用户可以直接使用 自定义变量:这种变量为用户自己定义的变量,需要先定义后再使用. 内置 ...

  7. android事件分发

    1). android对事件分发的顺序为:Activity--->PhoneWindow--->DecorView--->yourView; 2). android控件对事件处理的优 ...

  8. java中null转换成其它类型

    对null进行强转会不会抛错.测试结果是,如果把null强转给对象,是不会抛异常的,因为本身对象是可以为null的.但是如果是基本类型,比如 int i = (Integer)obj的强转,其实内部会 ...

  9. ES6——Class 的基本使用

    Class 语法. class 关键字声明一个类,之后以这个类来实例化对象. const Miaov=function(a,b){ this.a=a; this.b=b; return this; } ...

  10. UWP开发入门(三)——{x:Bind}扩展标记

    上周打炉石打得太晚……忘记更新了,本周补上.本篇我们讲一下{x:Bind}扩展标记.{x:Bind}扩展标记也是Windows 10 Uinversal 新增的内容,按官方的说法是 {Binding} ...