string类总结
来源:互联网 发布:大数据板块股票 编辑:程序博客网 时间:2024/06/08 14:08
string类总结
一、string对象的定义,初始化及读写
string s1; //默认构造函数,s1为空串string s2(s1); //将s2初始化为s1的副本string s1('wuyang'); //将s1初始化为一个字符串副本string s1(n, 'w'); //将s1初始化为一个n个'w'的字符串cin >> s1; //读取有效字符,遇到空格结束getline(cin, s1); //读取字符直至遇到换行(可以读取空格)getline(cin, s1, 'w'); //读取字符直至遇到字符'w'(可读取空格和换行)
二、string对象的操作
s1.empty(); //s1为空返回真,否则返回假reverse(s1.begin(), s1.end()); //将string对象迭代器指向的一段区间内元素反向排序s1.size(); //返回字符个数s1.length(); //同上,返回字符个数,一般不怎么用s1[n]; //返回位置为n的字符(从0开始计数)s1.append("abc"); //向字符串尾部添加字符串s1 + s2; //连接s1,s2两个字符串//可以把一个string对象和一个字符相连,但不能将两个字符相加.//s1 + 'w' + 'y'这种相加是允许的, 'w' + 'y' + s1是错误的.s1 = s2; //替换s1 == s2; //判断相等,相等返回真,否则返回假注意 s1.size() 返回的值并不是int类型
size_t 与 size_type: http://blog.csdn.net/sunshineacm/article/details/77481464
#include <iostream>#include <string>using namespace std;int main(){ string str1; getline(cin, str1); while(!str1.empty()) { for(string::size_type i = 0; i != str1.size(); ++i) //size_type { cout << str1[i]; } cout << endl; break; } return 0;}
三、string对象中字符的处理(头文件#include<cctype>)
isalnum(c); //如果c是字母或数字,返回真isdigit(c); //如果c是数字,返回真isalpha(c); //如果c是字母,返回真islower(c); //如果c是小写字母,返回真isupper(c); //如果c是大写字母,返回真tolower(c); //如果c是大写字母,则返回其小写字母,否则返回ctoupper(c); //如果c是小写字母,则返回其大写字母,否则返回cisgraph(c); //如果c是可打印字符且c不是空格,返回真isprint(c); //如果c是可打印字符(c可以是空格),返回真iscntrl(c); //如果c是控制符,返回真ispunct(c); //如果c是标点符号,返回真isxdigit(c); //如果c是十六进制数,返回真isspace(c); //如果c是空格字符,返回真//空格字符包括: 空格' ', 水平定位字符'\t', 归位键'\r', 换行'\n', 垂直定位字符'\v', 翻页'\f'
四、string与数值的相互转换(可以直接当做模板)
#include <iostream>#include <algorithm>#include <string>#include <numeric>#include <vector>#include <cstdio>#include <sstream>using namespace std;//c++方法:将数值转换为stringstring convert_to_string(double x){ ostringstream o; if(o << x) return o.str(); return "conversion error";}//c++方法,将string转化为数值double convert_from_string(const string &s){ istringstream i(s); double x; if(i >> x) return x; return 0.0;}int main(){ //将数值转换为string的c方法, 结合C++ char b[10]; string a; sprintf(b, "%d", 2017); //数值转化为string a = b; cout << a << endl; // //c++方法:将数值转换为string string cc = convert_to_string(1976); cout << cc << endl; //c++方法,将string转化为数值 string dd = "115165"; int p = convert_from_string(dd) + 1; cout << p << endl; return 0;}
五、字符的插入,删除,查找
- 插入
string s1;string::iterator it; //定义迭代器it = s1.begin(); //获取迭代器位置,此处为字符串首s1.insert(it + 1, 'p'); //字符'p'插到第1个字符前(字符位置从零计数)
- 删除
string s1;string::iterator it; //定义迭代器it = s1.begin(); //获取迭代器位置,此处为字符串首s1.erase(it + 3); //删除从it起第三个元素(字符位置从零计数)s1.erase(it, it + 4); //删除it到it + 4间四个元素
- 替换
string s1;s1.replace(pos, num, char*c); //替换从下标pos开始的num个元素替换为*c所指的元素替换的样例
//头文件略int main(){ string s1 = "abc123456"; s1.replace(3, 3, "good"); //从下标3开始连续三个元素替换为good cout << s1 << endl; return 0;}//输出结果abcgood
- 查找
string s1; //find函数有很多,这里只列举了一点点s1.find('c'); //返回第一个字符'c'的下标,查不到返回4294967295,即string::nposs1.find("c"); //返回第一个子串"c"的下标,查不到返回4294967295,即string::nposs1.find("good"); //返回第一个子串"good"的下标,查不到返回4294967295s1.find('c', pos); //从下标pos开始,返回第一个字符'c'的位置s1.find("c", pos); //从下标pos开始,返回第一个子串"c"的位置s1.find("good", pos, num); //从下标pos开始,返回子串中前num个子串在s1中的位置s1.rfind('c', pos); //从pos开始从后往前查找字符'c'在s1中的下标s1.rfind("c", pos); //从pos开始从后往前查找子串'c'在s1中的下标s1.rfind("good", pos, num); //从下标pos开始从后往前查找,返回子串中前num个子串在s1中的位置
原文链接:http://blog.csdn.net/qq_32680617/article/details/51122395
参考 :http://blog.csdn.net/yzl_rex/article/details/7839379
阅读全文
0 0
- STD:string string类总结
- String类总结
- string类总结
- Java String类总结
- c++ string类 总结
- String类使用总结
- C++ string类总结
- String类相关总结
- C++string类总结
- C++ string类 总结
- java String类总结
- string类总结
- string类总结
- String类用法总结
- string类的总结
- STL string 类总结
- string类总结
- String类相关知识总结
- 河南省第七届大学生程序设计竞赛 问题 B: 海岛争霸
- TIPTOP易拓代码模板
- PBAC基于策略的权限控制
- 关于如何找到人生目标
- 内蒙乌兰察布火山草原之旅
- string类总结
- iOS依赖管理CocoaPods使用
- AndroidStudio R文件找不到
- Intellij IDEA 根据数据库自动生成pojo和hbm
- 验证输入的是数字,小数
- 前端构建工具的用处
- sql语句之UNION,联合查询
- 部署STT-NODE服务
- 二维向量的垂向量