在学习C++之前  一般都是学过了C语言了

在C语言中   我们对字符串进行保存操作  使用的是char[]

但是在C++中    string比char[]的使用更为频繁  常见    下面稍微讲一下我对于string的认知

1.与其他的标准库类型一样   用户程序需要使用String类型对象  就必须包含相关的头文件   (为了编写方便   需要提供合适的using声明)

#include <string>
using std::string;

2.string对象的定义与初始化

    string s1;//创建空字符串
string s2("wo yao ac");//创建初始值为wo yao ac的字符串s2
string s3(s2);//创建s2的副本 s3值的改变 不影响s2
string s4(,'a');//创建字符串s4 值为2个字符‘a’
string s5=s2+s3;//创建字符串s5 值为s2+s3

输出结果   为

3.string的读写

在C中  我们使用 下面俩种方法读入字符串

scanf("%s",s1);
gets(s1);

而在C++中    string类型的数据使用的读入方法是cin

cin>>s1;

读取并忽略开头的所以空白字符   读取字符串至再次遇到空白字符为止    类似于scanf("%s",s1);

不过在解决问题的时候   我们不可能只需要保存连续的非空字符

这时候我们就需要一个像gets()一样的读入方法      getline(cin,s1);

4.string对象的操作

    s1.empty();   //判断s1是否为空   是就返回true   不是就返回false
s2.size(); //返回s2中的字符数目
s1[i]; //返回s1中下标为i的那个字符
s1+s2; //返回一个字符串 其等于s1的值后面紧接着s2
s1=s2; //将s2的值付给s1
  s1==s2  //比较s1与s2的值,相等就返回true   不然就返回false

注意:string类型的字符串也可以使用>  < 比较大小

5.string对象中字符的处理

C++ String 及其与char[]的比较的更多相关文章

  1. 将string转换成char* (转)

    原文:http://blog.sina.com.cn/s/blog_786ce14d01014lpr.html string 是c++标准库里面其中一个,封装了对字符串的操作把string转换为cha ...

  2. 将string转换成char*

    string 是c++标准库里面其中一个,封装了对字符串的操作  把string转换为char* 有3中方法:  1.data  如:  string str="abc";  ch ...

  3. 将string转化为char*的方法

    在构造文件流变量时候发现,fstream的第一个参数,即文件路径必须是const char * 如: string s = "/home/user/1.txt"; fstream ...

  4. std::string stringf(const char* format, ...)

    std::string stringf(const char* format, ...){ va_list arg_list; va_start(arg_list, format); // SUSv2 ...

  5. c++ string类型转换为char *类型

    string 是c++标准库里面其中一个,封装了对字符串的操作 把string转换为char* 有3中方法: 1.data 如: string str="abc"; char *p ...

  6. 为什么推荐std::string而不是char*

    例如如下: map<const char*, const char*> map_test; map_test["a"] = "a"; map_tes ...

  7. C++ unordered_map 在key为string类型和char*类型时测试时间性能差异

    测试系统liunx centos6.5 代码如下 #include <string.h> #include <sstream> #include <list> #i ...

  8. warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]

    在C++中, char* p = "abc"; // valid in C, invalid in C++ 会跳出警告:warning: ISO C++ forbids conve ...

  9. warning: ISO C++ forbids converting a string constant to 'char*'

    第1种字符串赋值方式: char * fileName="./2017-09-02-10-34-10.xml";//这一种字符串赋值方式已经被ISO禁止了 第2种字符串赋值方式: ...

  10. string、const char*、 char* 、char[]相互转换

    转化总结如下: 目标格式 源格式 string const char* char* char[] string NULL const char*=string.c_str(); const char* ...

随机推荐

  1. 虚拟环境安装及Hello World

    学习文章引自:  http://www.pythondoc.com/flask-mega-tutorial/helloworld.html 1.安装项目需要的工具包 pip install flask ...

  2. Oracle误删除数据恢复。Oracle删除后恢复数据

    发现误删除时需要及时处理,速度要快,姿势要帅.晚了就恢复不了额 1.查询时间 以确保恢复到某个时间点 select SQL_TEXT, LAST_ACTIVE_TIME from v$sqlarea ...

  3. dict 的 items() 方法与 iteritems() 方法的不同?

    items方法将所有的字典以列表方式返回,其中项在返回时没有特殊的顺序: iteritems方法有相似的作用,但是返回一个迭代器对象

  4. CodeForeces 842d Vitya and Strange Lesson ——(带lazy标记的01字典树)

    给一个序列,每次操作对这个序列中的所有数异或一个x,问每次操作完以后整个序列的mex值. 做法是去重后构建01字典树,异或x就是对root加一个x的lazy标志,每次pushDown时如果lazy的这 ...

  5. div双击全屏,再双击恢复到原来的状态vue,js来做

    需求是这样的: 有四个视频,视频是在4个区域,点击之后就全屏 <!DOCTYPE html> <html lang="en"> <head> & ...

  6. rapidxml学习

    参考: 官网http://rapidxml.sourceforge.net/ https://blog.csdn.net/wqvbjhc/article/details/7662931 http:// ...

  7. Redux遵循的三个原则是什么?

    (1)单一事实来源: 整个应用的状态存储在单个 store 中的对象/状态树里.单一状态树可以更容易地跟踪随时间的变化,并调试或检查应用程序. (2)状态是只读的: 改变状态的唯一方法是去触发一个动作 ...

  8. 第1课_Java基础知识【学习笔记】

    摘要:韦东山android视频学习笔记 一.android系统的基本框架如图一所示,应用程序是用java编写的,底层驱动是用C代码写的,java与C怎么连接在一起主要是通过本地服务.android系统 ...

  9. java的集合类【Map(映射)、List(列表)与Set(集)比较】

    https://baike.baidu.com/item/java%E9%9B%86%E5%90%88%E7%B1%BB/4758922?fr=aladdin https://www.cnblogs. ...

  10. SpringBoot整合Quartz和H2的例子

    话不多说,直接上代码: pom.xml <?xml version="1.0" encoding="UTF-8"?> <project xml ...