C语言的字符数组,以\0为终止算长度,string不看\0,以size为终止算长度。 下面是string的模拟实现源代码: string.h #include<iostream> #include<assert.h> using namespace std; namespace bit { class string { public: typedef char* iterator; typedef const char* const_iterator; //迭代器也要写两个版本...
3. 使用 接下来,我们看一下这个iterator如何使用: int main(int args, char* argv[]){ BH::list<std::string>l; l.push(std::string("hello")); l.push("world"); l.push("abcd"); l.push("efg"); l.push("kmm"); BH::ListIter<BH::ListItem<std::string>> iter(l.front()); BH::...
basic_string &replace( iterator start, iterator end, const basic_string &str ); basic_string &replace( iterator start, iterator end, const char *str ); basic_string &replace( iterator start, iterator end, const char *str, size_type num ); basic_string &replace( iterator start, iterator ...
string s("abd ddd"); for(auto it = s.begin(); it != s.end() && !isspace(*it); ++it){ *it = toupper(*it); } cout << s << endl; *///test3 不可改变vector::const_iterator类型/* vector<int>:: iterator it; vector<int>:: const_iterator it2; vector<int> v(5,1); i...
string &append(const_iterator first,const_iterator last);//把迭代器first和last之间的部分连接到当前字符串的结尾 string的比较: bool operator==(const string &s1,const string &s2)const;//比较两个字符串是否相等 运算符">","<",">=","<=","!="均被重载用于字符串的比较; ...
string::iteratorit=s.begin(); 我们首先写个String类名 后面跟上iterator(迭代器) 再后面加上一个it 等于号的右边写上对象的begin() 或者 end() 我们目前将它当作指针来看待 目前这个阶段这样子理解就好 使用方式如下 strings("hello world");string::iteratorit=s.begin();while(it!=s.end()){cout<<*...
stringss("HelloWorld!He.lloWorld!he"); vector<string>tmp; //以标点符号分开! vector<string>&tt=boost::algorithm::split(tmp,ss,boost::algorithm::is_punct() ); assert(boost::addressof(tmp) ==boost::addressof(tt) ); copy(tt.begin(),tt.end(),ostream_iterator<string>(cout,"\n") )...
#include <iostream>#include <string>using namespace std;//20200425 测试字符串操作 公众号:C与C语言plusint main(){ string s("hello"); string s2("abcdef"); string::iterator p = s.begin(); //迭代器p s.insert(p,'A'); //在迭代器p指向的s开始之前插入A cout << s << endl; //s...
STL的string(basic_string)的缺陷 归纳起来,STL的string类主要有以下这些争议点: 接口过多且规格和其他STL容器没有达成很好的一致性。例如,string::find使用下标,而不是以iterator作为迭代位置,这和其他容器不太一样。 内存碎片。由于过于频繁的字符串构造、析构,导致系统的内存碎片现象严重。
pair<string,int> p("Everybodynow",114514);//带初始值的 cout << p.first << " " << p.second << endl; 由于pair相当于是只有两个元素的结构体,那么对于元素的使用就是first和second。 运行结果: 当然也可以带上数组: //定义结构体数组 pair<int,int> p[5]; for(int i = 0; i < 5; ...