C++ string类

#include <iostream>
#include <string>  //导入类,同时必须使用 using namespace std;
//这个类是窄字节的
using namespace std;
 
int main ()
{
   string str1 = "Hello 李明";
   string str2 = "World";
   string str3;
   string s();
   string s1("liming");
   string s3(4, 'K');  // s3 = "KKKK"
      
   int  len ;
       
   str3 = str1;  // 复制 str1 到 str3
   //传值 
   len = str1.size(); //返回字符串的字节数 
   
   string s2("12345", 1, 3);  //提取子串
   //从序号1开始,提取3个字节 
   s2.assign("abcde", 2, 3);  //提取子串
   s2.assign(4, 'K');  // s2 = "KKKK"
   str3 = str1 + str2; //字符串连接
   s2+=str1;  //字符串连接
   s2="abcdefgh";
   s1="lm";
   //s1.append(s2); //在s1的尾部追加s2
   //s1.append(s2, 1, 2);  // s1 = "lmbc" 
   s1.append(3, 'K'); //s1 = "lmKKK" 
   
   //可以用 <、<=、==、!=、>=、> 运算符比较 string 对象
   s1="liming";
   s2="liMing lm";
   int n = s1.compare(s2);  //字符串比较 
   //比较的是ASCii吗 
   //小于 0 表示s1小;等于 0 表示两个字符串相等;大于 0 表示s2小
   
   s1 = "this is ok";
   s2 = s1.substr(2, 4);  //返回子串
   //从序号2开始取4个字节
   s2 = s1.substr(2); //返回子串
   //序号2开始到结尾
   s1.swap(s2);// 交换两个字符串的内容 
   
   s1="wo is liming isLM";
   n=s1.find('s',5);  //查找字符第一个的位置--序号
   //如果查不到,则返回 string::npos
   //参数2--可选:开始查找的位置 
   //从前往后查
   n=s1.find("is",1);  //查找字符串第一个的位置--序号
   //如果查不到,则返回 string::npos
   //参数2--可选:开始查找的位置 
   //从前往后查
   
   n=s1.rfind('s',10);//查找字符第一个的位置--序号
    //从后往前找 
    //如果查不到,则返回 string::npos
   //参数2--可选:开始查找的位置
   
   n=s1.rfind("is",10);//查找字符串第一个的位置--序号
    //从后往前找 
    //如果查不到,则返回 string::npos
   //参数2--可选:开始查找的位置
   
   n=s1.find_first_of("is",5);//查找s1中第一次出现"is"中任一字符的位置
   //如果查不到,则返回 string::npos
   //参数2--可选:开始查找的位置 
   //从前往后查
   
   n=s1.find_last_of("is",15); //查找s1中第一次出现"is"中任一字符的位置
   //如果查不到,则返回 string::npos
   //参数2--可选:开始查找的位置 
   //从后往前找
   
   n=s1.find_first_not_of("is",5); //查找s1中没有出现"is"中任一字符的位置
   //如果查不到,则返回 string::npos
   //参数2--可选:开始查找的位置 
   //从前往后查
   
   n=s1.find_last_not_of("is",5);//找s1中没有出现"is"中任一字符的位置
   //如果查不到,则返回 string::npos
   //参数2--可选:开始查找的位置
   //从后往前查找
   
   s1="Real Steel";
   s1.replace(1, 3, "123456", 2, 4);  //用 "123456" 的子串(2,4) 替换 s1 的子串(1,3)
   s1="Harry Potter";
   s1.replace(2, 3, 5, '0');  //用 5 个 '0' 替换子串(2,3)
   s1="Real Steel";
   s1.replace(3, 5, "XXX");  //将子串(3,5)替换为"XXX"
   
   s1="Real Steel";
   s1.erase(1, 3);  //删除子串(1, 3),此后 s1 = "R Steel"
   s1="Real-Steel";
   s1.erase(5);  //删除下标5及其后面的所有字符,此后 s1 = "Real-"
   
   s1="liming";
   s2="1234";
   s1.insert(2, "123");  //在下标2处插入字符串"123",s1 = "li123ming"
   s1="liming";
   s1.insert(2, s2);  //在下标2处插入 s2 , s1 = "li1234ming"
   s1="liming";
   s1.insert(2, 5, 'X');  //在下标2处插入 5个'X',s1 = "lixxxxxming"
   
   
      
   cout << s1<<endl;
  
   return 0;
}

 

string s = "liming";
    s[2] = 'M';  //修改某个字符
    cout << s;

 

 

#include <iostream>
#include <string> 
using namespace std;
#include <sstream>
 
int main ()
{
   //使用流对象 istringstream 和 ostringstream,可以将 string 对象当作一个流进行输入输出。使用这两个类需要包含头文件 sstream
   string src("Avatar 123 5.2 Titanic K");
   istringstream iStream(src); //建立src到istrStream的联系
   string s1, s2;
   int n;  double d;  char c;
   iStream >> s1 >> n >> d >> s2 >> c; //把src的内容当做输入流进行读取
   //从输入流 iStream 进行读取,过程和从 cin 读取一样,只不过输入的来源由键盘变成了 string 对象 src。因此,"Avatar" 被读取到 s1,123 被读取到 n,5.2 被读取到 d,"Titanic" 被读取到s2,'K' 被读取到 c
   cout <<s1<<endl;
   cout <<n<<endl;
   cout <<d<<endl;
   cout <<s2<<endl;
   cout <<c<<endl;
   
   ostringstream oStream;  //创建输出流
   oStream << s1 << endl << s2 << endl << n << endl << d << endl << c <<endl; 
   //将变量值输出到流 ostrStream 
    cout << oStream.str();
    //用 ostringstream类的str成员函数把ostringstream对象中的内容提取出来
   
  
   return 0;
}

 

 

 

 

posted @ 2020-07-31 20:12  天子骄龙  阅读(204)  评论(0编辑  收藏  举报