在学习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. Ubuntu 下面手动安装 Redis

    1.下载 wget http://download.redis.io/releases/redis-2.8.17.tar.gz .tar.gz cd redis- make 2.复制文件到bin目录 ...

  2. 64位内核开发第十二讲,进程监视,ring3跟ring0事件同步.

    一丶同步与互斥详解,以及实现一个进程监视软件. 1.用于线程同步的 KEVENT 事件很简单分别分为 事件状态. 以及事件类别. 事件状态: 有信号 Signaled 无信号 Non-signaled ...

  3. 利用python的matplotlib处理计算数据

    #!/usr/bin/python # -*- coding: UTF-8 -*- import numpy as np import matplotlib.pyplot as plt import ...

  4. 根据数据文件自定义边界条件timeVaryingUniformFixedValue【转载】

    转载自:http://blog.sina.com.cn/s/blog_e256415d0101nf9j.html 在OpenFOAM中,可以创建数据文件,自定义边界条件. 下面的例子读取outletP ...

  5. JDK提供的原子类原理与使用

    原子更新基本类型 原子更新数组 原子更新抽象类型 原子更新字段 原子更新基本类型: package com.roocon.thread.t8; import java.util.concurrent. ...

  6. 利用原生JS实时监听input框输入值

    传送门https://www.cnblogs.com/lantinggumo/p/7636715.html 传送门https://www.cnblogs.com/nailc/p/8572226.htm ...

  7. Understanding Action Filters (C#) 可以用来做权限检查

    比如需要操作某一张表league的数据,multi-tenancy的模式,每一行数据都有一个租户id的字段. 那么在api调用操作的时候,我们需要检查league的id,是否和当前用户所属的租户信息一 ...

  8. * resolve_conffiles: Existing conffile /etc/config/dhcp is different from the conffile in the new package. The new conffile will be placed at /etc/config/dhcp-opkg.

    * resolve_conffiles: Existing conffile /etc/config/dhcp is different from the conffile in the new pa ...

  9. Linux下通过nmap扫描局域网内设备,获取ip地址和mac地址

    安装nmap sudo apt-get install nmap 扫描  sudo nmap -sP -PI -PT

  10. Unity2017 熊猫跑酷

    1.背景 随着移动互联网的快速发展,现在的人们对手机的依赖程度越来越大,以至于为于手机用户量身定做的手机游戏大行其道.正是基于这样的背景,城市跑酷--这个好玩的游戏诞生了 2.机遇 手机触屏时代的到来 ...