第17章 string基本字符序列容器

/*

  第17章 string基本字符序列容器
   17.1 string技术原理
   17.2 string应用基础
   17.3 本章小结

*/

//  第17章 string基本字符序列容器
//   17.1 string技术原理 --------------------------------------------------------------------------------------

//   17.2 string应用基础 --------------------------------------------------------------------------------------

//259
#include <string>
#include <iostream>
int main(void)
{
  using namespace std;
  string s1;
  s1.push_back(‘a‘);
  s1.push_back(‘b‘);
  s1.push_back(‘c‘);
  cout << "打印s1: " << s1 << endl;
  //
  char *cArray = "efgh";
  string s2(cArray);
  cout << "打印s2: " << s2 << endl;
  //字符串的"+"操作
  cout << "打印s1+s2: " << s1 + s2 << endl;
  //字符串s1后添加字符串s2
  cout << "append后,打印s1: " << s1.append(s2) << endl;
  //在s1的第2个字符位置前插入字符‘8‘
  string::iterator i;
  i = s1.begin();
  i++;
  s1.insert(i, ‘8‘);
  cout << "insert后,打印s1: " << s1 << endl;
  //字符串的"+="操作
  s1 += s2;
  cout << "s1+=s2后,打印s1: " << s1 << endl;
  return 0;
}

//260 遍历字符
#include <string>
#include <iostream>
int main(void)
{
  using namespace std;
  char *cArray = "hello, world!";
  string s(cArray);
  //数组方式
  for(unsigned int j = 0; j < s.size(); j++)
    cout << "第" << j << "个字符: " << s[j] << endl;
  //迭代器方式
  string::reverse_iterator ri, rend;
  rend = s.rend();
  cout << "反向打印字符" << endl;
  for(ri = s.rbegin(); ri != rend; ri++)
    cout <<  *ri << ‘ ‘;
  cout << endl;
  return 0;
}

//261 erase
#include <string>
#include <iostream>
int main(void)
{
  using namespace std;
  char *cArray = "a12345678b";
  string s(cArray);
  s.erase(s.begin());
  cout << s << endl; //打印出12345678b
  //
  s.erase(s.begin() + 3, s.end() - 2);
  cout << s << endl; //打印出1238b
  //
  s.erase(0, 2);
  cout << s << endl; //打印38b
  //
  s.clear();
  return 0;
}

//262 replace
#include <string>
#include <iostream>
int main(void)
{
  using namespace std;
  char *cArray1 = "hello,boy!";
  string s(cArray1);
  //
  s.replace(6, 3, "gril"); //boy替换为girl
  cout << s << endl; //打印hello gril!
  //
  s.replace(10, 1, 1, ‘.‘); //将"hello gril!"的‘!‘替换为‘.‘
  cout << s << endl; //打印hello gril.
  //
  s.replace(s.begin(), s.begin() + 5, "good morning");
  cout << s << endl; //打印good morning girl.
  return 0;
}

//263, find
#include <string>
#include <iostream>
int main(void)
{
  using namespace std;
  //0123456789012345678901234
  string s("dog bird chicken bird cat");
  //字符串查找
  cout << s.find("bird") << endl; //打印4
  cout << (int)s.find("pig") << endl; //打印-1
  //字符查找
  cout << s.find(‘i‘, 7) << endl; //打印11
  //从字符串的末尾开始查找字符串
  cout << s.rfind("bird") << endl; //打印17
  //从字符串的末尾开始查找字符
  cout << s.rfind(‘i‘) << endl; //打印18
  //查找第1个属于某子串的字符
  cout << s.find_first_of("13r98") << endl; //找到字符r,打印6
  //查找第1个不属于某字符串的字符
  cout << s.find_first_not_of("dog bird 2006") << endl; //找到字符c,打印9
  //查找最后一个属于某子串的字符
  cout << s.find_last_of("13r98") << endl; //字符r,打印19
  //查找最后一个不属于某字符串的字符
  cout << s.find_last_not_of("tea") << endl; //字符c,打印22
  return 0;
}

//263-264, compare
#include <string>
#include <iostream>
int main(void)
{
  using namespace std;
  string s1("abcdef");
  string s2("abc");
  cout << s1.compare("abcdef") << endl; //相等,打印0
  cout << s1.compare(s2) << endl; //s1 > s2,打印1
  cout << s1.compare("abyz") << endl; //s1 < "abyz",打印-1
  //
  cout << s1.compare(0, 3, s2) << endl; //s1的前3个字符==s2,打印0
  return 0;
}

//264
#include <string>
#include <iostream>
int main(void)
{
  using namespace std;
  string s;
  cout << s.empty() << endl; //空字符串,返回1
  s += "1234567";
  cout << s.empty() << endl; //不为空,返回0
  cout << s.size() << endl; //7个字符,返回7
  cout << s.length() << endl; //返回7
  //
  const char *cArray = s.c_str();
  cout << cArray[2] << endl; //返回字符3
  return 0;
}

//   17.3 本章小结 --------------------------------------------------------------------------------------

TOP

时间: 2025-01-02 15:14:46

第17章 string基本字符序列容器的相关文章

string基本字符序列容器(竞赛时常用的使用方法总结)

C语言只提供了一个char类型用来处理字符,而对于字符串,只能通过字符串数组来处理,而C++STL提供了string基本字符序列容器来处理字符串,可以将其理解为字符串类,它提供了添加,删除,替换.查找和比较等丰富.简洁的方法. 下面是在编写代码是的具体应用. 1 //关于C++ STL string基本字符系列容器的学习,看别人的代码一百遍,不如自己动手写一遍. 2 #include <string> 3 #include <vector> 4 #include <iostr

string基本字符序列容器

C语言每天提供专门的字符串类型,需要通过字符数组才能对字符串进行存储和处理.在标准C++中,字符串类由C++ STL实现.string是一个基于字符的序列容器,具有vector向量一样的内部线性结构,字符逐一写入容器,最后以null字符结尾.跟传统的char*字符数组相比,string提供了丰富的函数用于字符的添加.删除.替换.查找和比较等. 创建string对象 主要有以下几种方式. (1)    string() string s; (2)    string(conststring&s,s

C++之string基本字符系列容器

string基本字符系列容器 C语言只提供了一个插入类型用来处理字符, 而对于字符串, 只能通过字符串数组来处理, 显得十分不便. C++STL提供了string基本字符系列容器来处理字符串, 可以把string理解为字符串类, 它提供了添加, 删除, 替换, 查找和比较等丰富的方法. 虽然使用vector<char>这样的向量也可以处理字符串, 但功能比不上string. 向量的元素类型可以是string, 如vector<string>这样的向量, 实际上就类似于C语言中的字符

string基本字符系列容器

今天学了关于string的一些基本字符容器,下面我就摘要几种. 一.用reverse反向排序string对象(要用#include<algorithm>头文件) 1 #include<iostream> 2 #include<string> 3 #include<algorithm> 4 using namespace std; 5 int main() 6 { 7 string s; 8 cin>>s; 9 reverse(s.begin(),

string基本字符系列容器(一)

由于C语言中只提供了一个char类型用来处理字符,对于字符串的处理,我们往往都是通过字符数组来处理的,这有些时候还是很不方便的. 其实vector<char>就和char类型的数组很像,vector<string>就是字符串类型的数组了. 1.1 创建一个string类型的对象 下面的代码创建了一个字符串对象s,且s是一个空串,他的长度是0, 对于string来说,可以同时用s.length()和s.size()来求长度 # include<iostream> # in

JAVA基础 String包装类下 .replace方法的使用以及char和字符序列的使用场景

ptLink0.setText(arbu.getPtLink().replace("&","&")); // 如果像 '&','&' 这样替换是不行的,因为 '' 是给char用的,要替换字符序列的话,需要用 "" .replace连用用来替换多个char字符或者字符序列(String): // 在读取的时候,解析器会自动将其转换回"&","<","&

Java的——String类、StringBuffer和StringBuilder、不可变和可变字符序列使用陷阱

Java的知识点21--String类.StringBuffer和StringBuilder.不可变和可变字符序列使用陷阱 原文链接 https://blog.csdn.net/qq_39368007/article/details/84033272 String类 String 类对象代表不可变的Unicode字符序列,因此我们可以将String对象称为"不可变对象" substring()是对字符串的截取操作,但本质是读取原字符串内容生成了新的字符串. String测试代码 pac

C++ primer plus读书笔记——第16章 string类和标准模板库

第16章 string类和标准模板库 1. string容易被忽略的构造函数: string(size_type n, char c)长度为n,每个字母都为c string(const string & str, size_type pos = 0, size_type n = pos)初始化为str中从pos开始到结尾的字符,或从pos开始的n个字符 string(const char *s, size_type n)初始化为s指向的前n个字符,即使超过了s的结尾: string(Iter b

C++ Primer Plus 第六版 第16章 string类和标准模板库

1.string实际上是模板具体化basic_string<char> 的一个typedef,有默认参数,所以省略了初始化参数 2.size_type是一个依赖于实现的整形 string将string::npos定义为字符串的最大长度 3.string类的构造函数P656 4.对于c-风格字符串,3种输入方法:cin>>   cin.getline(),cin.get 对于string   ,2种输入方法:cin>>,getline(cin,string对象) 5.st