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* ...
随机推荐
- org.apache.ibatis.cache.CacheException: Error serializing object
异常: 十二月 26, 2017 3:38:05 下午 org.apache.jasper.servlet.TldScanner scanJars 信息: At least one JAR was s ...
- shell history 命令
1.history命令可以显示历史执行过的命令: 2.使用!+序号执行该序号对应的命令: 例子 $ history sed 's/haha/hello/g' test cat test cat tes ...
- IDEA中常用快捷键
Alt+Enter 牛掰的万能快捷键,实现接口和抽象类.导入包.异常捕获.转换lambda表达式.equals的翻转和更换访问修饰符等,无所不能. Ctrl+D 复制当前行 Ctrl+Y 删除行 ...
- Linux文件与文件夹的权限问题
0x01 修改文件可读写属性的方法 例如:把index.htm 文件修改为可写可读可执行: chmod 777 index.htm 要修改目录下所有文件属性可写可读可执行: chmod 777 *.* ...
- Chrome远程调试之WebSocket
var ws = new WebSocket('ws://localhost:9222/devtools/page/3c5c05fa-80b7-4cfe-8d1d-ebe79a7a5730');ws. ...
- 为什么要监控sql语句,以及如何监控,都有哪几种方式可以监控。
快速阅读 为什么要监控sql语句,以及如何监控,都有哪几种方式可以监控. 我们知道sql server 中有个工具叫sql profile ,可以实时监控sql server中 执行的sql 语句,以 ...
- UDP如何实现可靠传输
概述 UDP不属于连接协议,具有资源消耗少,处理速度快的优点,所以通常音频,视频和普通数据在传送时,使用UDP较多,因为即使丢失少量的包,也不会对接受结果产生较大的影响. 传输层无法保证数据的可靠传输 ...
- 2018-2019 20165226 Exp 8 Web基础
2018-2019 20165226 Exp 8 Web基础 目录 一.实验内容说明及基础问题回答 二.实验过程 1.Web前端:HTML 2.Web前端j:avascipt 3.Web后端:MySQ ...
- C字符贪吃蛇
算法参照Perl字符贪吃蛇,源码: #include <stdio.h> #include <windows.h> #define WIDTH 12 // 宽 #define ...
- laravel中图片的删除
laravel中图片的删除 一.总结 一句话总结: laravel里面删除的话还是建议用Storage的delete方法,不建议用原生php的unlink方法,不然没找到文件可能会报异常 二.lara ...