zoukankan      html  css  js  c++  java
  • C++手稿:std::string

    字符串在非常多编程语言中已经成为基本数据类型,C语言中我们使用char*来手动申请和维护字符串, 在C++中,能够使用std::string来方便地创建和操作字符串。

    string是一个模板类。它有basic_string<T>定义:

    typedef basic_string<char> string;
    

    C++的string能够通过成员方法c_str()转换为C语言的char*

    參考文档:cplusplus.com/string

    初始化与赋值

    string有两个经常使用的构造函数:

    // 用一个C字符串构造
    string str("hello");
    // 等价于
    string str = "hello";
    

    也能够用N个相同的字符来构造字符串:string str2(8, 'x')

    在C0x标准中,std::to_string能够将非常多类型转换为一个string,能够取代itoa,比如:

    string str = to_string(123);
    

    string构造函数不接受charint类型。

    字符串能够直接互相赋值,内存会自己主动拷贝和销毁。我们大可不必管它。对于单个字符赋值能够使用下标运算符:

    for(int i=0;i<str.length(); i++){
        str[i] = 'a';
    }
    

    与多数class类似。string也提供了swapstr1.swap(s2)将会交换二者的值。

    运算符支持

    有通用运算符支持的数据类型往往更easy理解和操作,当中最讨人喜欢的莫过于+运算符:

    str += str2;
    str = str + "hello";
    

    当然,你也能够直接调用append方法:str.append(str2)

    除了+string还支持一系列的比較运算符:<==><=>=!=

    当然,你仍然能够直接调用compare方法:str1.compare(str2)str1小则会返回-1

    长度

    • 字符串为空
      • empty():返回是否为空。
      • clear():清空字符串。

    • 字符串长度
      • length():等效于size()。返回字符串长度。
      • resize(10, 'x'):改变长度。假设超过了原有长度,后面补x,第二个參数默认值为null。

    • 字符串内存
      • capacity():无需再次申请内存可存放的字符数。
      • reserve(10):申请10字符的内存。通常在大量的insert前先reserve一下。避免多次申请内存。

    查找

    • str.find("ll"):字符串llstr中第一次出现的下标,未找到为string::npos
    • str.rfind("ll"):同上,从右向左查找。
    • str.find("ll", 3):从下标3開始查找。

    改动

    • erase(5):去掉下标5開始的全部字符。
    • replace(2, 3, "ll"):下标2開始的3个字符换成"ll"
    • insert(2, "ll"):下标2处插入"ll"

    流处理

    在C++中。标准输入输出、文件、字符串都能够作为一个流,来接受输入或者输出。 在C++中字符串流也是格式化输出的一种经常使用手段。

    string input("test 123");
    istringstream sinput(input);
    
    string str;
    int i;
    sinput >> str >> i;
    
    ostringstream soutput;
    soutput << str << i;
    cout<< soutput.str();
    // test123
    
  • 相关阅读:
    would clobber existing tag
    已成功与服务器建立连接,但是在登录前的握手期间发生错误。 (provider: TCP 提供程序, error: 0
    C#搭建简单的http服务器,访问静态资源
    使用iis反向代理
    WorkerServices部署为Windows服务
    mongo 操作数据库的方式
    odoo db_name 指定多个数据库
    odoo 如何设置字段变更跟踪
    odoo qweb 视图使用widget
    odoo 代码片段比较全的扩展
  • 原文地址:https://www.cnblogs.com/wzjhoutai/p/7152278.html
Copyright © 2011-2022 走看看