关于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的操作的更多相关文章

  1. Library string Type

    The string type supports variable-length character strings.The library takes cares of managing memor ...

  2. [Cpp primer] Library string Type

    In order to use string type, we need to include the following code #include<string> using std: ...

  3. 【java】String类和StringBuffer类常用操作

    String类是字符串常量,是不可更改的常量.而StringBuffer是字符串变量,它的对象是可以扩充和修改的.StringBuffer在进行字符串处理时,不生成新的对象,在内存使用上要优于Stri ...

  4. spring3+struts2+hibernate3整合出现的问题,No mapping found for dependency [type=java.lang.String, name='struts.objectFactory.spring.enableAopSupport']

    七月 11, 2016 3:49:24 下午 org.apache.tomcat.util.digester.SetPropertiesRule begin警告: [SetPropertiesRule ...

  5. 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 ...

  6. 出错:Failed to convert property value of type 'org.apache.ibatis.session.defaults.DefaultSqlSessionFactory' to required type 'java.lang.String' for property 'sqlSessionFactoryBeanName';

    出错的详细信息: 3 ERROR [http-nio-80-exec-3] org.springframework.web.servlet.DispatcherServlet - Context in ...

  7. 问题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 ...

  8. Python把json格式的string对象转变成dict对象操作、Python3不能使用urllib2、urllib.parse.urlencode(params).encode(encoding='UTF8')

    son格式的string对象转变成dict对象操作 content=eval(content)#json字典转化 Python3不能使用urllib2 直接使用urllib.request替换urll ...

  9. 前台传参数时间类型不匹配:type 'java.lang.String' to required type 'java.util.Date' for property 'createDate'

    springMVC action接收参数: org.springframework.validation.BindException: org.springframework.validation.B ...

随机推荐

  1. Hive 0.12 Caused by: MetaException(message:Version information not found in metastore. )解决方法

    配置完成Mysql存储元数据信息,启动后测试show tables报错ERROR exec.DDLTask: org.apache.hadoop.hive.ql.metadata.HiveExcept ...

  2. ZOJ-2365 Strong Defence 贪心,BFS

    题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=2365 我没看懂题目...这样理解:一个有向图,要给一些边染色,使 ...

  3. POJ-3678 Katu Puzzle 2sat

    题目链接:http://poj.org/problem?id=3678 分别对and,or,xor推出相对应的逻辑关系: 逻辑关系 1 0  A and B     A'->A,B'->B ...

  4. POJ1947 - Rebuilding Roads(树形DP)

    题目大意 给定一棵n个结点的树,问最少需要删除多少条边使得某棵子树的结点个数为p 题解 很经典的树形DP~~~直接上方程吧 dp[u][j]=min(dp[u][j],dp[u][j-k]+dp[v] ...

  5. Codeforces182D - Common Divisors(KMP)

    题目大意 如果把字符串a重复m次可以得到字符串b,那么我们称字符串a为字符串b的一个因子,现在给定两个字符串S1和S2,求它们的公共因子个数 题解 如果它们有公共因子,那么显然它们的最小公共因子肯定是 ...

  6. SecureCRT中文乱码解决方法

    在windows下使用SecureCRT访问MAC主机,发现中文总是乱码.而且默认会话选项设置的字符编码就是UTF-8,和MAC主机默认字符编码一样. 后来通过设置,解决了中文乱码问题. 具体使用了两 ...

  7. 如何使用iframe实现隐藏的CSRF

    1.攻击者在“页面1”中http://www.b.com/indexb.html中写下如下代码: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1. ...

  8. Visual C++中的编译器优化

    博客搬到了fresky.github.io - Dawei XU,请各位看官挪步.最新的一篇是:Visual C++中的编译器优化.

  9. cocos2d-x载入texture

    转自:http://blog.csdn.net/aa4790139/article/details/8107325 SpriteTestLayer.cpp(就只改了这个这个文件) #include & ...

  10. Edit显示行号

    Edit显示代码行号 关键点 使用这个类然后关联Edit的变量为 LineNumberEdit类型的 实现过程 //////////////////////////////////////////// ...