string类型介绍
一、前言
int,float,char,C++标准库提供的类型:string,vector。
string:可变长字符串的处理;vector一种集合或者容器的概念。
二、string类型简介
C++标准库中的类型,代表一个可变长的字符串
char str[100] = “I Love China”; // C语言用法
三、定义和初始化string对象
#include <iostream>
#include <string>
using namespace std; int main()
{
string s1; // 默认初始化,s1=””,””空串,表示里面没有字符
string s2 = “I Love China”; // 把I Love China 这个字符串内容拷贝到了s2代表的一段内存中,拷贝时不包括末尾的\0;
string s3(“I Love China”); // 与s2的效果一样。
string s4 = s2; // 将s2中的内容拷贝到s4所代表的的一段内存中。 int num = ;
string s5 = (num,’a’);// 将s5初始化为连续num个字符的’a’,组成的字符串,这种方式不太推荐,因为会在系统内部创建临时对象。
return ;
}
四、string对象上的操作
(1)判断是否为空empty(),返回的布尔值
string s1;
if(s1.empty()) // 成立
{
cout << “s1字符串为空” <<endl;
}
(2)size()/length():返回字节/字符数量,代表该字符串的长度。unsigned int
string s1;
cout << s1.size() << endl; //
cout << s1.length() << endl; //
string s2 = “我爱中国”;
cout << s2.size() << endl;//
cout << s2.length() << endl; //
string s3 = “I Love China”;
cout << s3.size() << endl;//
cout << s3.length() << endl; //
(3)s[n]:返回s中的第n个字符,(n是个整型值),n代表的是一个位置,位置从0开始,到size()-1;
如果用下标n超过这个范围的内容,或者本来是一个空字符串,你用s[n]去访问,都会产生不可预测的作用。
string s3 = “I Love China”;
if(s3.size()>)
{
cout << s3[] << endl;
s3[] = ‘’;
}
cout << s3 << endl; // I Lowe China
(4)s1+s2:字符串的连接,返回连接之后结果,其实就是得到一个新的string对象。
string s4 = “abcd”;
string s5 = “efgk”
string s6 = s4 + s5;
cout << s6 <<endl;
(5)s1 = s2:字符串对象赋值,用s2中的内容取代s1中的内容
string s4 = “abcd”;
string s5 = “efgk”
s5 = s4;
cout << s5 <<endl; // abcd
(6)s1 == s2:判断两个字符串是否相等。大小写敏感:也就是大小写字符跟小写字符是两个不同的字符。相等:长度相同,字符全相同。
string s4 = “abcd”;
string s5 = “abcd”
if(s5 == s4)
{
cout << “s4 == s5” <<endl; // abcd
}
(7)s1 != s2:判断两个字符串是否不相等
string s4 = “abcd”;
string s5 = “abcD”
if(s5 != s4)
{
cout << “s4 != s5” <<endl; // abcd
}
(8)s.c_str():返回一个字符串s中的内容指针,返回一个指向正规C字符串的指针常亮,也就是以\0存储。
这个函数的引入是为了与C语言兼容,在C语言中没有string类型,所以我们需要通过string对象的c_str()成员函数将string对象转换为C语言的字符串样式。
string s4 = “abcd”;
const char *p = s4.c_str(); // abcd
char str[];
strcpy_s(str,sizeof(str),p);
cout << str << endl; string s11(str); // 用C语言的字符串数组初始化string类型。
(9)读写string对象
string s1;
cin >> s1; // 从键盘输入
cout << s1 << endl;
(10)字面值和string相加
string str1 = “abc”;
string str2 = “def”;
string str3 = s1 + “ and ” + s2 + ‘e’; // 隐式类型转换
cout << str3 << endl; // abc and defe;
// string s1 = “abc” + “def”; // 语法上不允许
(11)范围for针对string的使用:C++11提供了范围for:能够遍历一个序列的每一个元素。string可以看成一个字符序列。
string s1 = “I Love China”;
for(auto c:s1) // auto:变量类型自动推断
{
cout << c << endl; // 每次输出一个字符,换行
} for(auto &c:s1) // auto:变量类型自动推断
{
// toupper()把小写字符转换为大写,大写字符不变
c = toupper(c); // 因为c是一个引用,所以这相当于改变s1中的值
}
cout << s1 << endl;
string类型介绍的更多相关文章
- ElasticSearch 5学习(9)——映射和分析(string类型废弃)
在ElasticSearch中,存入文档的内容类似于传统数据每个字段一样,都会有一个指定的属性,为了能够把日期字段处理成日期,把数字字段处理成数字,把字符串字段处理成字符串值,Elasticsearc ...
- String类型的属性和方法
× 目录 [1]属性 [2]对象通用方法 [3]访问字符方法[4]字符串拼接[5]创建子串方法[6]大小写转换[7]查找子串位置[8]正则匹配方法[9]去除首尾空格[10]字符串比较 前面的话 前面已 ...
- java动手动脑和课后实验型问题String类型
1.请运行以下示例代码StringPool.java,查看其输出结果.如何解释这样的输出结果?从中你能总结出什么? true true false 总结: 使用new关键字创建字符串对象时, 每次申请 ...
- java内存分配和String类型的深度解析
[尊重原创文章出自:http://my.oschina.net/xiaohui249/blog/170013] 摘要 从整体上介绍java内存的概念.构成以及分配机制,在此基础上深度解析java中的S ...
- javascript类型系统——字符串String类型
× 目录 [1]定义 [2]引号 [3]反斜线[4]特点[5]转字符串 前面的话 javascript没有表示单个字符的字符型,只有字符串String类型,字符型相当于仅包含一个字符的字符串 字符串S ...
- String类型,Function类型
1.String类型: 1)创建String对象: var str=new String(s); String(s); 参数:参数 s 是要存储在 String 对象中的值或转换成 ...
- java string类型的初始化
以下基本上是java string类型最常用的三种方法 new string()就不介绍了 基本等同于第三种 String a; 申明一个string类型的 a,即没有在申请内存地址,更没有在内存 ...
- java中的堆、栈、常量池以及String类型的两种声明
参考自http://blog.sina.com.cn/s/blog_798b04f90100ta67.html http://www.cnblogs.com/fguozhu/articles/2661 ...
- C++中将string类型转换为int, float, double类型 主要通过以下几种方式:
C++中将string类型转换为int, float, double类型 主要通过以下几种方式: # 方法一: 使用stringstream stringstream在int或float类型转换为 ...
随机推荐
- AnimationState
1.1 AnimationClip AnimationClip是Unity3D中播放动画的最基本对象,通过FBX导入的各个动画对象其实就是一个AnimationClip.这个类已关键帧的形式记录了骨骼 ...
- $_SERVER['PHP_AUTH_USER']
PHP 的 HTTP 认证机制仅在 PHP 以 Apache 模块方式运行时才有效,因此该功能不适用于 CGI 版本.在 Apache 模块的 PHP 脚本中,可以用 header() 函数来向客户端 ...
- win10,python连接mysql报”Can't connect to MySQL server on 'localhost' (10061)”
一.环境及问题描述 1. 环境 操作系统:win10家庭版,64bit python版本:Python 2.7.15 mysql版本:mysql 5.4.3 2. 问题描述 最近跟公司申请电脑,预装w ...
- 如何设计Kafka?
著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处.作者:Sugar Su链接:http://zhuanlan.zhihu.com/ms15213/20545422来源:知乎 此文稿来 ...
- [Java]通过java获取计算机名
通过java获取计算机名 String hostname = "Unknown"; try { InetAddress addr; addr = InetAddress.getLo ...
- docker跨主机互联
以下内容只是命令,原理自行百度,google或者官方查阅! 方案一.overlay Consul 三台主机为例(都要安装docker): 192.168.20.20(consul服务) 192.168 ...
- 使用phpStorm编辑器进行PHP代码的xdebug调试
首先需要安装Xdebug,如果没有安装可以查看PHP断点调试工具Xdebug的安装这篇文章.phpStorm是开发者经常用的一款编辑器,当然也支持Xdebug调试,下面说一下配置步骤. phpStor ...
- 安装完 swoole 后出现 PHP Warning: PHP Startup: Unable to load dynamic library 'swoole.so'的解决方法
安装完 swoole 后出现 PHP Warning: PHP Startup: Unable to load dynamic library 'swoole.so' (tried: /home/s ...
- github push403错误的处理
如果没有什么别的问题的话,推荐使用SSH的方式.请参考:http://stackoverflow.com/questions/7438313/pushing-to-git-returning-erro ...
- [label][paypal] Paypal 支付页面的语言显示问题
答复 Frank 通过 Email2014-11-12 02:01 上午 您好 感谢您联系PayPal商家技术支持中心. PayPal登陆页面的语言是PayPal服务器根据以下各种因素来自动判断的:1 ...