C++ String 及其与char[]的比较
在学习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[]的比较的更多相关文章
- 将string转换成char* (转)
原文:http://blog.sina.com.cn/s/blog_786ce14d01014lpr.html string 是c++标准库里面其中一个,封装了对字符串的操作把string转换为cha ...
- 将string转换成char*
string 是c++标准库里面其中一个,封装了对字符串的操作 把string转换为char* 有3中方法: 1.data 如: string str="abc"; ch ...
- 将string转化为char*的方法
在构造文件流变量时候发现,fstream的第一个参数,即文件路径必须是const char * 如: string s = "/home/user/1.txt"; fstream ...
- std::string stringf(const char* format, ...)
std::string stringf(const char* format, ...){ va_list arg_list; va_start(arg_list, format); // SUSv2 ...
- c++ string类型转换为char *类型
string 是c++标准库里面其中一个,封装了对字符串的操作 把string转换为char* 有3中方法: 1.data 如: string str="abc"; char *p ...
- 为什么推荐std::string而不是char*
例如如下: map<const char*, const char*> map_test; map_test["a"] = "a"; map_tes ...
- C++ unordered_map 在key为string类型和char*类型时测试时间性能差异
测试系统liunx centos6.5 代码如下 #include <string.h> #include <sstream> #include <list> #i ...
- 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 ...
- warning: ISO C++ forbids converting a string constant to 'char*'
第1种字符串赋值方式: char * fileName="./2017-09-02-10-34-10.xml";//这一种字符串赋值方式已经被ISO禁止了 第2种字符串赋值方式: ...
- string、const char*、 char* 、char[]相互转换
转化总结如下: 目标格式 源格式 string const char* char* char[] string NULL const char*=string.c_str(); const char* ...
随机推荐
- 虚拟环境安装及Hello World
学习文章引自: http://www.pythondoc.com/flask-mega-tutorial/helloworld.html 1.安装项目需要的工具包 pip install flask ...
- Oracle误删除数据恢复。Oracle删除后恢复数据
发现误删除时需要及时处理,速度要快,姿势要帅.晚了就恢复不了额 1.查询时间 以确保恢复到某个时间点 select SQL_TEXT, LAST_ACTIVE_TIME from v$sqlarea ...
- dict 的 items() 方法与 iteritems() 方法的不同?
items方法将所有的字典以列表方式返回,其中项在返回时没有特殊的顺序: iteritems方法有相似的作用,但是返回一个迭代器对象
- CodeForeces 842d Vitya and Strange Lesson ——(带lazy标记的01字典树)
给一个序列,每次操作对这个序列中的所有数异或一个x,问每次操作完以后整个序列的mex值. 做法是去重后构建01字典树,异或x就是对root加一个x的lazy标志,每次pushDown时如果lazy的这 ...
- div双击全屏,再双击恢复到原来的状态vue,js来做
需求是这样的: 有四个视频,视频是在4个区域,点击之后就全屏 <!DOCTYPE html> <html lang="en"> <head> & ...
- rapidxml学习
参考: 官网http://rapidxml.sourceforge.net/ https://blog.csdn.net/wqvbjhc/article/details/7662931 http:// ...
- Redux遵循的三个原则是什么?
(1)单一事实来源: 整个应用的状态存储在单个 store 中的对象/状态树里.单一状态树可以更容易地跟踪随时间的变化,并调试或检查应用程序. (2)状态是只读的: 改变状态的唯一方法是去触发一个动作 ...
- 第1课_Java基础知识【学习笔记】
摘要:韦东山android视频学习笔记 一.android系统的基本框架如图一所示,应用程序是用java编写的,底层驱动是用C代码写的,java与C怎么连接在一起主要是通过本地服务.android系统 ...
- 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. ...
- SpringBoot整合Quartz和H2的例子
话不多说,直接上代码: pom.xml <?xml version="1.0" encoding="UTF-8"?> <project xml ...