string Type
Notes from C++ Primer
Operations
Operations of string support lots of operations of sequential container.
- string s; define a new empty string object, named s.
- string s(cp); define a new string object, initialized by a C-style string pointed by cp.
- string s(s2); define a new string object initialized by the copy of s2.
- is >> s; read a string splited by space from input stream is, write into s.
- os << s; output the s into output stream os.
- getline(is, s) get a line of string from input stream is, output into s.
- s1 + s2 concatenate string s1 and string s2.
- s1 += s2 concatenate string s2 at the end of string s1.
As the operation of string is almost the same as container, many executions of vector can be replaced like codes below:
string s("Hiya!");
string::iterator iter = s.begin();
while(iter != s.end())
cout << *iter++ << endl; // postfix increment: print old value
Operations only for string
There're three base operations supported by string type but container type.
- substr function, return the sub-string of current string object.
- append and replace function, modify string object.
- a series of find function, which is used to find string object.
Operations of sub-string:
- s.substr(pos, n) return a substring of s, from position pos with length n in s.
- s.substr(pos) return a substring of s, from position pos to the end of s.
- s.substr() return a copy of s.
1. substr
We can pass the beginning position pos of ing substring and a counter n which determines the length of substring to function substr to finish returning substring.
string s("hello world");
// return substring of 5 characters starting at position 6
string s2 = s.substr(6, 5); // s2 = world
An alternative way is:
// return substring from position 6 to the end of s
string s3 = s.substr(6); // s3 = world
2. append and replace
append function offers an shortcut to insert string at the end of string:
string s("C++ Primer"); // initialize s to "C++ Primer"
s.append(" 3rd Ed."); // s == "C++ Primer 3rd Ed."
// equivalent to s.append(" 3rd Ed.")
s.insert(s.size(), " 3rd ED.");
replace function is a shortcut of deleting some characters and then inserting other contents:
// starting at position 11, erase 3 characters and then insert "4th"
s.replace(11, 3, "4th"); // s == "C++ Primer 4th Ed." // equivalent way to replace "3rd" by "4th"
s.erase(11, 3); // s == "C++ Primer Ed."
s.insert(11, "4th"); // s == "C++ Primer 4th Ed."
Also, we don't need to require the length of inserting string is the same as the length of deleting string. Thus we can replace longer or shorter string:
s.replace(11, 3, "Fourth"); // s == "C++ Primer Fourth Ed."
3. find operations of string
string class offers 6 kinds of serarch function. They all return a string::size_type type value indicating the position of match, or return a special value string::npos indicating fail. string class define npos as a value larger than any validate index of string.
- s.find(args) find the first position match with args in s.
- s.rfind(args) find the last position match with args in s.
- s.find_first_of(args) find the first position match with any character in args in s.
- s.find_last_of(args) find the last position match with any character in args in s.
- s.find_first_not_of(args) find the first position of character not belong to args in s.
- s.find_first_not_of(args) find the first position of character not belong to args in s.
3.1 The simple accurate search is find function.
string name("AnnaBelle");
string::size_type pos1 = name.find("Anna"); // pos1 == 0
By default, find operation is case sensitive:
string lowercase("annabelle");
pos1 = lowercase.find("Anna"); // pos1 == npos
3.2 Find any character
The process of finding any character is more complicated. For example, find the first number in name:
string numerics("0123456789");
string name("r2d2");
string::size_type pos = name.find_first_of(numerics);
cout << "found number at index: " << pos
<< " element is " << name[pos] << endl; // pos == 1
3.3 Find from a predetermined position
We can pass one more parameter pos to the find function, which indicates the beginning position of finding. Generally, this parameter is used to find all the match characters of string s in a loop.
string::size_type pos = 0; // each trip reset pos to the next instance in name
while((pos = name.find_first_of(numerics, pos)) != string::npos)
{
cout << "found number at index: " << pos
<< " element is " << name[pos] << endl; ++pos; // move to the next character
}
3.4 Find the mismatch position
find_first_not_of function is used to find the first position of mismatch character. For example, finding the first nonnumerical character:
string numbers("0123456789");
string dept("03714p3");
// returns 5, which is the index to the character 'p'
string::size_type pos = dep.find_first_not_of(numerics);
3.5 Reverse finding
We can also find the character from right to left:
string river("Mississippi");
string:size_type first_pos = river.find("is"); // return 1
string:size_type last_pos = river.rfind("is"); // return 4
Attention: find_last function is very likely the find_first function. The only difference is the return of find_last is the last position of first match substring, and the find_first returns the first position of first match match substring.
string Type的更多相关文章
- Library string Type
The string type supports variable-length character strings.The library takes cares of managing memor ...
- setLocale(java.util.Locale), setCharacterEncoding(java.lang.String),setContentType(java.lang.String type)
对于setCharacterEncoding(java.lang.String),这个方法是javax.servlet.ServletRequest和javax.servlet.ServletResp ...
- [Cpp primer] Library string Type
In order to use string type, we need to include the following code #include<string> using std: ...
- Library string type(2)——关于String的操作
关于string的定义,请参阅博文http://blog.csdn.net/larry233/article/details/51483827 string的操作 s.empty() //Return ...
- Excel Sheet Column Title (STRING - TYPE CONVERTION)
QUESTION Given a positive integer, return its corresponding column title as appear in an Excel sheet ...
- Redis String Type
Redis字符串的操作命令和对应的api如下: set [key] [value] JedisAPI:public String set(final String key, final String ...
- PythonStudy——字符串类型 String type
# 1.定义# 需求:你是"好学生" s1 = "你是\"好学生\"" print(s1) # 可以通过引号的嵌套,使内部不同的引号在不转义 ...
- entity framework异常 The specified cast from a materialized 'System.Int32' type to the 'System.String' type is not valid
ROW_NUMBER() OVER (ORDER BY (select Null)) AS Id entity framework 查询中有这句会有异常
- (type interface {}) to type string
go 语言开发中,经常会在函数中碰到使用 insterface{} 作为接收任意参数,但是我们接收的数据经常是需要做类型转换,由于是初学者,因此,初次转换我是直接就 func New(paramete ...
随机推荐
- linux文件属性的10个字符各代表什么意思
10个字符表示文件类别和权限,具体如下: 例: 第一个字符表示文件类别,代表的含义如下:-:普通文件d:目录文件b:块设备文件c:字符设备文件l:符号链接文件 后面9个字符代表3组访问权限:第1组的3 ...
- java判断是否是数字
1.用JAVA自带的函数 public static boolean isNumeric(String str){ for (int i = 0; i < str.length(); i++){ ...
- 移动端UL列表无法平滑向下滚动问题
问题说明: 移动端向上滑动后,,列表无法自动滚动到底部~~而是类似屏幕"沾手"的效果(手离开屏幕直接停止在当前~列表不会自动向下滚动一段) 问题原因: 页面中存在如下代码: 当前页 ...
- Python中的logging模块【转】https://www.cnblogs.com/yelin/p/6600325.html
[转]https://www.cnblogs.com/yelin/p/6600325.html 基本用法 下面的代码展示了logging最基本的用法. 1 # -*- coding: utf-8 -* ...
- .Net 中读写Oracle数据库常用两种方式
.net中连接Oracle 的两种方式:OracleClient,OleDb转载 2015年04月24日 00:00:24 10820.Net 中读写Oracle数据库常用两种方式:OracleCli ...
- Array.prototype.push.apply(a,b)和Array.prototype.slice.call(arguments)
Array.prototype.push.apply(a,b) 时常看到在操作数组的时候有这样的写法: var a = [1,2,3]; var b = [4,5,6]; a.push.apply(a ...
- 2018年秋季学期面向对象程序设计(JAVA)课程总结
2018年秋季学期面向对象程序设计(JAVA)课程总结 时值2018年年末,按惯例对本学期教学工作小结如下: 1. 教学资源与教学辅助平台 教材:凯 S.霍斯特曼 (Cay S. Horstmann) ...
- Python开发【第八篇】:socket网络编程
服务端: import socket server = socket.socket() #绑定要监听的端口 server.bind(('localhost',6969)) #监听 server.lis ...
- Linux下Mysql安装(RPM安装)
1. 首先检查机器里是否已经存在MySQL $ rpm -qa | grep mysql 2. 去官网下载相应的rpm包:https://dev.mysql.com/downloads/mysql/ ...
- idea打包含第三方依赖的jar包
1.打开idea,打开java项目,选择file-->Project Structure,添加依赖的jar包 2.配置artfacts 点击ok,不需要做任何操作 点击jar,右键新建一个lib ...