最近刷了一些题,很多喜欢考字符串转换之类的,自己平时容易忘记,做题时也去翻了很多次,故归纳下来,加深印象。
-
字符操作
我们经常要处理string对象中的字符,比如检查一个string是否包含空白,大小写转换,首字母大写,归纳一些字符处理的操作。
再cctype的头文件中定义了一组标准库函数处理这部分工作。主要是简化代码,改善易读性。
isalnum(c) 当c是字母或数字时为真
isalpha(c) 当c是字母时为真
isdigit(c) 当c是是数字时为真
islower(c) 当c是小写字母时为真
issupper(c) 当c是大写字母时为真
isspace(c) 当c是空格时为真
ispunct(c) 当c是标点符号时为真(c不是数字,字母,控制字符,可打印空白中的一种)
isgraph(c) 当c是不是空格但可打印的字符时为真
isprint(c) 当c是可打印字符时为真(即c是空格或c具有可视形式)
isxdigit(c) 当c是16进制时为真
tolower(c) 当c是大写字母,输出对应的小写字母,否则原样输出c
toupper(c) 当c是小写字母,输出对应的大写字母,否则原样输出c
-
string对象
初始化方式
string s1 string s2(s1) string s2 = s1 string s3("value") //直接初始化 string s3 = "value" //拷贝 string s4(n, ‘c‘) //初始化为n个c //n,len2和pos都是无符号值 string s(cp, n) //s是cp指向数组中前n个字符的拷贝。此数组至少包含n个字符 string s(s2, pos2) //s是string s2从pos位置开始的字符的拷贝,若pos2>s2.size(),构造函数的行为未定 string s(s2, pos2, len2) //pos2开始n个字符的拷贝
介绍string对象的操作之前,先介绍下标准IO库对string的特别支持。
string流
sstream头文件定义了三个类型来支持内存IO。 关系如下
stringstream继承包括istringstream和ostringstream, sstream继承包括iostream和stringstream
例如从控制台读入一行 int数据 (1 2 3 4 5 6):
#include<iostream> #include<sstream> #include<string> using namespace std; vector<int> readNumLine() { string strLine; vector<int> vctNums = {}; if(getline(cin, strLine)) { vctNums = {}; int nNum; istringstream iss(strLine); while(iss>>nNum) vctNums.push_back(nNum); } }
ostringstream与 cout 类似。
-
string对象的操作
首先是重载的运算符 << 、>>、 []、=、==、!=、+、<、<=、>、>=。
getline(is, s) //从is中读入一行赋给s 返回is s.empty() s.size()
string子字符串操作
s.substr(pos, n) //返回一个string,包含s中从pos开始的n个字符的拷贝,pos默认为0.n默认为 s.size() - pos,即pos开始的所有字符
string搜索操作
未完待续。。。
原文地址:https://www.cnblogs.com/hao11/p/12189358.html