zoukankan      html  css  js  c++  java
  • string类型 C++

    (C++递归预习到了string类型,这个是处理字符串的一个非常好用的东西,在C里面没有.今天来学习一下)

    顺便推荐一个很不错的网站:http://c.biancheng.net/view/400.html



    首先,为了在程序中使用string类型,必须包含头文件 <string>。如下:

       #include <string>

    (注意这里不是string.h,string.h是C字符串头文件。)

    string类是一个模板类,位于名字空间std中,通常为方便使用还需要增加:

       using namespace std;

    声明一个字符串变量很简单:

    string str;

    一.对象赋值:

     1  string str;  //定义了一个空字符串str
     2 
     3     str = "Hello world";   // 给str赋值为"Hello world"
     4 
     5     char cstr[] = "abcde";  //定义了一个C字符串
     6 
     7     string s1(str);       //调用复制构造函数生成s1,s1为str的复制品
     8 
     9     cout<<s1<<endl;
    10 
    11     string s2(str,6);     //将str内,开始于位置6的部分当作s2的初值
    12 
    13     cout<<s2<<endl;
    14 
    15     string s3(str,6,3);  //将str内,开始于6且长度顶多为3的部分作为s3的初值
    16 
    17         cout<<s3<<endl;
    18 
    19     string s4(cstr);   //将C字符串作为s4的初值
    20 
    21     cout<<s4<<endl;
    22 
    23     string s5(cstr,3);  //将C字符串前3个字符作为字符串s5的初值。
    24 
    25     cout<<s5<<endl;
    26 
    27     string s6(5,'A');  //生成一个字符串,包含5个'A'字符
    28 
    29     cout<<s6<<endl;
    30 
    31     string s7(str.begin(),str.begin()+5); //区间str.begin()和str.begin()+5内的字符作为初值
    32 
    33     cout<<s7<<endl;
    34 
    35     return 0;
    
    

    输出:

    Hello world

    
    

    world

    
    

    wor

    
    

    abcde

    
    

    abc

    
    

    AAAAA

    
    

    Hello

    
    

    二.比较

    好不容易把各种string赋上你想要的值,现在我们开始比较.

    string类型支持><+==这些字符串里根本做不到的比较.

     1  string str;
     2 
     3     cout << "Please input your name:"<<endl;
     4 
     5     cin >> str;
     6 
     7     if( str == "Li" )   // 字符串相等比较
     8 
     9         cout << "you are Li!"<<endl;
    10 
    11     else if( str != "Wang" )  // 字符串不等比较
    12 
    13         cout << "you are not Wang!"<<endl;
    14 
    15     else if( str < "Li")     // 字符串小于比较,>、>=、<=类似
    16 
    17         cout << "your name should be ahead of Li"<<endl;
    18 
    19     else
    20 
    21         cout << "your name should be after of Li"<<endl;
    22 
    23     str += ", Welcome!";  // 字符串+=
    24 
    25     cout << str<<endl;
    26 
    27     for(int i = 0 ; i < str.size(); i ++)
    28 
    29         cout<<str[i];  // 类似数组,通过[]获取特定的字符
    30 
    31     return 0;

    三.特性函数

    string有很多它自己的函数

    int capacity()const;    //返回当前容量(即string中不必增加内存即可存放的元素个数)

    int max_size()const;    //返回string对象中可存放的最大字符串的长度

    int size()const;        //返回当前字符串的大小

    int length()const;       //返回当前字符串的长度

    bool empty()const;        //当前字符串是否为空

    void resize(int len,char c);  //把字符串当前大小置为len,多去少补,多出的字符c填充不足的部分

    用的时候:

    str.capacity=...

    代码:

     1     string str;
     2 
     3         if (str.empty())//判断是不是空的
     4 
     5         cout<<"str is NULL."<<endl;
     6 
     7         else
     8 
     9         cout<<"str is not NULL."<<endl;
    10 
    11     str = str + "abcdefg";//string可以直接加
    12 
    13     cout<<"str is "<<str<<endl;
    14 
    15         cout<<"str's size is "<<str.size()<<endl;//   str's size is 7(size 是字符数,类似strlen)
    16 
    17        cout<<"str's capacity is "<<str.capacity()<<endl;//str's capacity is 15  
    18 
    19     cout<<"str's max size is "<<str.max_size()<<endl;//str's max size is 4294967294
    20 
    21     cout<<"str's length is "<<str.length()<<endl;//str's length is 7 (其实和size是一样的)
    22 
    23     str.resize(20,'c');(20个字符,空位补c)
    24 
    25     cout<<"str is "<<str<<endl;//str is abcdefgccc
    26 
    27     str.resize(5);(5个字符,多的删掉)
    28 
    29     cout<<"str is "<<str<<endl;//str is abcde
    30 
    31     return 0;
     1 #include <iostream> 
     2 #include <string>  3 using namespace std;
     4 int main()
     5  {
     6  string str1 = "abc123defg";
     7  string str2 = "swap!";
     8  cout<<str1<<endl; 
     9 cout<<str1.erase(3,3)<<endl;
    10  //从索引3开始的3个字符,即删除掉了"123"
    11  cout<<str1.insert(0,"123")<<endl;
    12  //在头部插入
    13  cout<<str1.append("123")<<endl;
    14  //append()方法可以添加字符串
    15  str1.push_back('A'); //push_back()方法只能添加一个字符 
    16 cout<<str1<<endl;
    17  cout<<str1.replace(0,3,"hello")<<endl;
    18  //即将索引0开始的3个字符替换成"hello"
    19  cout<<str1.substr(5,7)<<endl;
    20  //从索引5开始7个字节 
    21 str1.swap(str2); 
    22 cout<<str1<<endl;
    23  const char* p = str.c_str();
    24  printf("%s
    ",p);
    25  return 0;
    26  }
  • 相关阅读:
    WebService之Axis2 (3):使用services.xml文件发布WebService
    WebService之Axis2(2):复合类型数据的传递
    WebService之Axis2(1):用POJO实现0配置的WebService
    com.mchange.v2.c3p0.impl.NewPooledConnection@be1839d closed by a client的正确解答
    拿到新服务器时应做的标准测试
    rabbitmq heartbeat missing with heartbeat = N seconds原因总结
    从技术专家到管理者的思路转变(V1)
    netty集成ssl完整参考指南(含完整源码)
    技术晋升的评定与博弈(转)
    Eureka-zookeeper的服务发现替代方案
  • 原文地址:https://www.cnblogs.com/zhmlzhml/p/12325435.html
Copyright © 2011-2022 走看看