1. string的定义原型

    typedef basic_string<char, char_traits<char>, allocator<char> >
    string;
    typedef basic_string<wchar_t, char_traits<wchar_t>, allocator<wchar_t> >
    wstring; // 第二三个参数有默认值

  2. string部分构造方式
    // string 部分构造方式
    #include <iostream>
    #include <string>
    using namespace std; int main(void)
    {
    string s1;
    string s2("ABCDEFG");
    cout << s1 << endl;
    cout << s2 << endl; // 使用最初的形式定义
    basic_string<char> s3("xxxx");
    cout << s3 << endl; /*
    basic_string(
    const value_type *_Ptr,
    size_type _Count
    );
    */
    string s4("DEFG", 2);
    cout << s4 << endl; // DE
    /*
    basic_string(
    const basic_string& _Right,
    size_type _Roff,
    size_type _Count = npos
    );
    */
    string s5(s2, 2, 2);
    cout << s5 << endl; //CD /*
    basic_string(
    const_iterator _First,
    const_iterator _Last
    );
    */
    string::const_iterator first = s2.begin() + 1;
    string::const_iterator end = s2.begin() + 3; // [first, end)
    string s6(first, end);
    cout << s6 << endl; // BC return 0;
    }

  3. string常用成员函数
    // string 部分成员函数部分形式操作
    #include <iostream>
    #include <string>
    using namespace std; int main(void)
    {
    string s1("ABCDEC");
    cout << s1.size() << endl;
    cout << s1.length() << endl; cout << s1.empty() << endl;
    // 一样第二个参数是count,不是截至位置
    string s2 = s1.substr(1, /*4*/string::npos); // string::npos == 4294967295
    cout << s2 << endl; //find
    /*
    size_type find(
    value_type _Ch,
    size_type _Off = 0
    ) const;
    */
    // 查找某个字符在string中第一次出现的位置(下标),没找到返回 4294967295 最大值
    cout << s1.find('C') << endl; // 2
    //size_type -> size_t ->unsigned int
    /*
    size_type find(
    const value_type* _Ptr,
    size_type _Off = 0
    ) const;
    */
    // 在string中查找字符串,找到返回第一次出现位置的下标,没找到返回 string::npos, 4294967295 最大值
    cout << s1.find("CD") << endl; // 2
    /*
    size_type find(
    const basic_string<CharType, Traits, Allocator>& _Str,
    size_type _Off = 0
    ) const;
    */
    // 在string中查找string
    cout << s1.find(s2) << endl; //rfind,反向查找,返回第一次查找到的下标
    cout << s1.rfind('C') << endl; // 5 //replace
    /*
    basic_string<CharType, Traits, Allocator>& replace(
    size_type _Pos1,
    size_type _Num1,
    const value_type* _Ptr
    );
    */
    // 第三个参数也能是string,这里不写了,只介绍这一个好了
    string s3 = s1;
    s3.replace(1, 2, "RRR");
    cout << s3 << endl; // ARRRDEC // compare
    cout << s3.compare(s1) << endl; // 1, s3 > s1 // insert
    /*
    basic_string<CharType, Traits, Allocator>& insert(
    size_type _P0,
    const value_type* _Ptr
    );
    */
    s3.insert(2, "aaaaaaaaaaa");
    cout << s3 << endl; // ARaaaaaaaaaaaRRDEC // append
    /*
    basic_string<CharType, Traits, Allocator>& append(
    const value_type* _Ptr
    );
    */
    s3.append("OOOOOOOOOOOOOOOOO");
    cout << s3 << endl; // ARaaaaaaaaaaaRRDECOOOOOOOOOOOOOOOOO // swap
    /*
    void swap(
    basic_string<CharType, Traits, Allocator>& _Str
    );
    */
    s3.swap(s2);
    cout << s3 << endl;
    cout << s2 << endl; return 0;
    }

  4. string综合应用
      在字符集中查找存在的首尾字符,并截取。
    #include <iostream>
    #include <string>
    using namespace std; int main()
    {
    string strinfo = " //*---------Hello World!--------------*//";
    string strset = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
    /*
    size_type find_first_of(
    const basic_string<CharType, Traits, Allocator>& _Str,
    size_type _Off = 0
    ) const;
    */
    string::size_type first = strinfo.find_first_of(strset);
    if (first == string::npos)
    cout << "not found." << endl;
    string::size_type end = strinfo.find_last_of(strset);
    if (end == string::npos)
    cout << "not found." << endl;
    //cout << "string::npos" << string::npos << endl; // string::npos == 4294967295
    cout << strinfo.substr(first, end - first + 1) << endl; return 0;
    }

  5. string简单去除字符串左右空格
    // string 简单实现去除字符串左右空格
    #include <iostream>
    #include <string>
    using namespace std; class StringUtils {
    public:
    static void LTrim(string &s)
    {
    string drop = " \t";
    s.erase(0, s.find_first_not_of(drop));
    } static void RTrim(string &s)
    {
    string drop = " \t";
    s.erase(s.find_last_not_of(drop)+1);
    } static void Trim(string &s)
    {
    LTrim(s);
    RTrim(s);
    }
    }; int main(void)
    {
    string s1 = " ABCD ";
    StringUtils::Trim(s1);
    cout << s1 << endl; // "ABCD"
    cout << s1.size() << endl; // 4 return 0;
    }

http://www.cnblogs.com/ifpelset/articles/4523925.html

std::string 简单入门的更多相关文章

  1. 标准C++类std::string的内存共享和Copy-On-Write...

    标准C++类std::string的 内存共享和Copy-On-Write技术 陈皓 1. 概念 Scott Meyers在<More Effective C++>中举了个例子,不知你是否 ...

  2. 【转】标准C++类std::string的内存共享和Copy-On-Write技术

    1.             概念 Scott Meyers在<More Effective C++>中举了个例子,不知你是否还记得?在你还在上学的时候,你的父母要你不要看电视,而去复习功 ...

  3. 标准C++类std::string的内存共享和Copy-On-Write技术

    标准C++类std::string的  内存共享和Copy-On-Write技术 陈皓 1. 概念 Scott Meyers在<More Effective C++>中举了个例子,不知你是 ...

  4. [原创]MYSQL的简单入门

    MYSQL简单入门: 查询库名称:show databases; information_schema mysql test 2:创建库 create database 库名 DEFAULT CHAR ...

  5. could not deduce template argument for 'const std::_Tree<_Traits> &' from 'const std::string'

    VS2008, 写一个简单的demo的时候出现了这个: 1>------ Build started: Project: GetExportTable, Configuration: Relea ...

  6. Okio 1.9简单入门

    Okio 1.9简单入门 Okio库是由square公司开发的,补充了java.io和java.nio的不足,更加方便,快速的访问.存储和处理你的数据.而OkHttp的底层也使用该库作为支持. 该库极 ...

  7. 【java开发系列】—— spring简单入门示例

    1 JDK安装 2 Struts2简单入门示例 前言 作为入门级的记录帖,没有过多的技术含量,简单的搭建配置框架而已.这次讲到spring,这个应该是SSH中的重量级框架,它主要包含两个内容:控制反转 ...

  8. C++: std::string 与 Unicode 结合

    一旦知道 TCHAR 和_T 是如何工作的,那么这个问题很简单.基本思想是 TCHAR 要么是char,要么是 wchar_t,这取决于_UNICODE 的值: // abridged from tc ...

  9. C++: std::string 与 Unicode 如何结合?

    关键字:std::string Unicode 转自:http://www.vckbase.com/document/viewdoc/?id=1293 一旦知道 TCHAR 和_T 是如何工作的,那么 ...

随机推荐

  1. 【习题5-5 UVA-10391】Compound Words

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 枚举每一个串的分割点. 看看左右两个串在不在字符串中即可. [代码] #include <bits/stdc++.h> ...

  2. 关于右移和除法的关系 , ADC采集电量 ,ADC采集MIC(麦克风)

    //////////////////////////////////////////////////////////////////////////////////////////////////// ...

  3. FZU 1650 1752 a^b mod c

    http://acm.fzu.edu.cn/problem.php?pid=1752 http://acm.fzu.edu.cn/problem.php?pid=1650 给跪了. 我的快速幂会越界. ...

  4. php面试题9(看的时候就应该随手截图做笔记的)

    php面试题9(看的时候就应该随手截图做笔记的) 一.总结 看的时候就应该随手截图做笔记的 二.php面试题9 一.选择题:1.下面哪个表达式不能将两个字符串$s1 和$s2 串联成一个单独的字符串? ...

  5. Opencv在视频中静态、动态方式绘制矩形框ROI

    Opencv视频处理中的目标跟踪经常用到要在视频上画一个矩形框ROI,标注出要跟踪的物体,这里介绍两种在视频中绘制矩形框的方法,一种是"静态的",一种是"动态的" ...

  6. js循环json数组

    例如数据库里面的json字符串是这样的 var str = '[{"name":"宗2瓜","num":"1",&quo ...

  7. 【AJAX】AJAX实现搜索信息自己主动推荐并补全

    好久没有继续看AJAX的视频教程了,今天就将最后一个教程案例做完.我们在搜索引擎中输入文字时文本框下会提示对应的信息,这个案例就是实现这样的基本功能,代码比較粗糙还须要进一步完好,当中有些地方也须要向 ...

  8. Objective-C基础笔记(8)Foundation经常使用类NSString

    一.创建字符串的方法 void stringCreate(){ //方法1 NSString *str1 = @"A String!"; //方法2 NSString *str2 ...

  9. 【浅墨Unity3D Shader编程】之中的一个 夏威夷篇:游戏场景的创建 &amp; 第一个Shader的书写

    本系列文章由@浅墨_毛星云 出品.转载请注明出处. 文章链接:http://blog.csdn.net/poem_qianmo/article/details/40723789 作者:毛星云(浅墨)  ...

  10. 【t007】棋盘放置指南车问题

    Time Limit: 1 second Memory Limit: 50 MB [问题描述] 按照国际象棋的规则,车可以攻击与之处在同一行或同一列上的棋子.指南车是有方向的车.横向指南车可以攻击与之 ...