关于string的定义,请参阅博文http://blog.csdn.net/larry233/article/details/51483827
string的操作
s.empty() //Returns true if s is empty,otherwise returns false
s.size() //Returns numbers of characters of s
s[n] //Returns the character at position n in s,positions start at 0
- s1 + s2 //Returns a string equals to the concatenation of s1 and s2
- s1 = s2 //Replaces characters in s1 by a copy of s2
- v1 == v2 //Returns true if v1 and v2 are equal,false otherwise
- !=,<,<=,>,>= //Have their normal meanings
以下为示例代码:
#include<iostream>
#include<string>
using std::string;
using std::cin;
using std::cout;
using std::endl;
int main()
{
string st("The expense of spirit\n");
cout<<"The size of "<<st<<"is "<<st.size()
<<" characters, including the newline"<<endl;
if(st.size() == 0)
cout<<"st is empty"<<endl;
/*
*equals to:
*if(st.empty()){...}
*/
string st1 = st;
cout<<"st1 is "<<st1;
return 0;
}
运行结果为:
The size of The expense of spirit is
22 characters, including the newline
st1 is The expense of spirit
如果再插入如下代码:
string s1 = "Hello";
string s2 = " World!\n";
string s3 = s1 + s2;
cout<<s3<<endl;
运行结果为
Hello World!
字符串字面常量与string相加
请看下列代码:
string s1 = "hello";
string s2 = "world";
string s3 = s1 + ","; //ok,adding a string and a literal
strign s4 = "hello" + ",";//error,no string operand
string s5 = s1 + "," + " world";//ok,each + has a string operand
string s6 = "hello" + "," + s2;//error,can't add strign literals
s1和s2都是直接初始化为string的,但是对于s3就不同了,首先“,”是一个字符串字面常量,它与s1相加,由于s1是string,它被隐式转换为string后再与s1相加;
对于s4,两个都是字符串字面常量,它们相加是非法的,必须要用strcat(s1,s2)将它们“连接”,而不是“相加”;
对于s5,其实它和s3是一样的:s1和“,”相加,它先将“,”转换为string再与s1相加,返回的是string,然后再与”world”相加…
对于s6,一开始是”hello”和”,”相加,和s4的错误相同。
string:: size_type
逻辑上来说,string的size()函数的返回值应为int型,更精确的说,是unsigned型。但是在实际应用中,我们从某一个文件读到的字符数量很容易就超过了unsigned型的范围,string为size()函数里提供了一种更为安全的返回类型string:: size_type。
从string中取得字符
示例如下:
string str(“some string”);
for(string::size_type ix = 0; ix != str.size(); ++ix)
cout<<str[ix]<<endl;
也可以改变string的值:
//将str的字符全置为*
for(string::size_type ix = 0; ix != str.size(); ++ix)
str[ix] = 'x';
作者注:从改变string的值的方式(是str[x] = ‘x’而不是str[x] = “x”)我们可以看出,我们所得到的每一个str的字符都是char型,而不是string。这是值得注意的。
处理string字符串的函数
处理string字符串的函数包含在头文件cctype中,编程时应将该头文件包含:
#include<cstring>
该头文件包含的一部分函数清单如下:
// 本文所有代码均出自《C++ primer》
// 上次敲英文敲得太累了,这次直接翻译成中文了(其实真正的原因是英文版没人看,赚不到访问量: ( ),结果还是花了将近两个小时,天哪我还没复习啊。。。
Library string type(2)——关于String的操作的更多相关文章
-
Library string Type
The string type supports variable-length character strings.The library takes cares of managing memor ...
-
[Cpp primer] Library string Type
In order to use string type, we need to include the following code #include<string> using std: ...
-
【java】String类和StringBuffer类常用操作
String类是字符串常量,是不可更改的常量.而StringBuffer是字符串变量,它的对象是可以扩充和修改的.StringBuffer在进行字符串处理时,不生成新的对象,在内存使用上要优于Stri ...
-
spring3+struts2+hibernate3整合出现的问题,No mapping found for dependency [type=java.lang.String, name=&#39;struts.objectFactory.spring.enableAopSupport&#39;]
七月 11, 2016 3:49:24 下午 org.apache.tomcat.util.digester.SetPropertiesRule begin警告: [SetPropertiesRule ...
-
A const field of a reference type other than string can only be initialized with null Error [duplicate]
I'm trying to create a 2D array to store some values that don't change like this. const int[,] hiveI ...
-
出错:Failed to convert property value of type &#39;org.apache.ibatis.session.defaults.DefaultSqlSessionFactory&#39; to required type &#39;java.lang.String&#39; for property &#39;sqlSessionFactoryBeanName&#39;;
出错的详细信息: 3 ERROR [http-nio-80-exec-3] org.springframework.web.servlet.DispatcherServlet - Context in ...
-
问题1-The type java.lang.String cannot be resolved. It is indirectly referenced from required .class files
问题一:The type java.lang.String cannot be resolved. It is indirectly referenced from required .class f ...
-
Python把json格式的string对象转变成dict对象操作、Python3不能使用urllib2、urllib.parse.urlencode(params).encode(encoding=&#39;UTF8&#39;)
son格式的string对象转变成dict对象操作 content=eval(content)#json字典转化 Python3不能使用urllib2 直接使用urllib.request替换urll ...
-
前台传参数时间类型不匹配:type &#39;java.lang.String&#39; to required type &#39;java.util.Date&#39; for property &#39;createDate&#39;
springMVC action接收参数: org.springframework.validation.BindException: org.springframework.validation.B ...
随机推荐
-
Android业务组件化之现状分析与探讨
前言: 从个人经历来说的话,从事APP开发这么多年来,所接触的APP的体积变得越来越大,业务的也变得越来越复杂,总来来说只有一句话:这是一个APP臃肿的时代!所以为了告别APP臃肿的时代,让我们进入一 ...
-
使用OpenXML操作Office文档
使用OpenXML类库, 以编程的方式来访问PowerPoint, Word, Excel等文档, 有时能够为我们批量编辑文档提供方便. 最近项目中遇到的两个任务是: 1. 替换文档中的图片的Alt ...
-
ajax返回值给上层函数的方法。
function load_val(callback){//定义一个回调函数 $.getJSON('test.php' , function(dat){ callback(data);//将返回结果当 ...
-
jq layer插件使用
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...
-
使用RadioGroup与RadioButton实现多选一
RadioGroup是RadioButton的集合, RadioGroup里面可以包含很多RadioButton,提供多选一机制,只能选择其中一个 RadioGroup的orientation(方向) ...
-
python基础5之装饰器
内容概要: 一.装饰器前期知识储备 1.python解释函数代码过程: python解释器从上往下顺序解释代码,碰到函数的定义代码块不会立即执行它,而是将其放在内存中,等到该函数被调用时,才执行其内部 ...
-
ASP.NET MVC5 + EF6 + LayUI实战教程,通用后台管理系统框架(3)
前言 本节将我们自己的CSS样式替换系统自带的 开始搭建 将脚本文件夹删掉,将内容文件夹里的内容删掉,将我们自己的CSS样式文件,全部复制到内容里边 新建家庭控制器 给家庭控制器添加索引视图 指数代码 ...
-
Linux 权限管理命令
第四章(二)权限管理命令 Linux常用命令(二)权限管理命令
-
开源通用爬虫框架YayCrawler-运行与调试
本节我将向大家介绍如何运行与调试YayCrawler.该框架是采用SpringBoot开发的,所以可以通过java –jar xxxx.jar的方式运行,也可以部署在tomcat等容器中运行. 首先 ...
-
SSH 证书登录(实例详解)
SSH 证书登录(实例详解) 客户端通过私钥登录 ssh 服务器 CentOS 7 SSH 使用证书登录 使用私钥 ssh 登陆 CentOS