今日学习札记——<string>初步(11.17)

原创 2015年11月17日 19:10:14
1.string 的定义:typedef basic_string<char> string; 所以,我们只要利用string关键字,就能生成一个以basic_string<char>模板类
所衍生而出的对象。
范例1:
string Str;   //如不指定初始值,则字符串为一个空字符串。
范例2:
cin>>Str;    //利用cin将字符串数据输入到Str对象中。
范例3:声明对象时,我们也可以顺便指定初始值。
string Str("LOVE");
2.basic_string类的基本成员函数----<下钻1:string基本成员函数>
(1) append()  //主字符串延长(调用者)
(2) assign()  //认领
(3) at()      //某个位置字符
(4) begin()   //返回主字符串的起始定位器
    end()     //返回主字符串的终止定位器
(5) compare() //作差比较
(6) data()    //首位置的指针
(7) empty()   //是否为空串
(8) erase()   //擦除
(9) length()  //返回长度
    size()   //容器的大小

(10) find()    //找子字符串第一个出现的位置
     rfind()   //从后往前找
(11) insert()  //插入到某个位置
(12) substr()  //返回子串
(13) swap()    //两个串互换
(14) getline() //取得用户输入的一行数据

3.string重载的运算符
(1) A+B   //将字符串A与字符串B做合并
(2) A!=B  //判断A是否不等于B
(3) A==B  //判断A是否等于B
(4) A<B   //判断A是否小于B(同样有<=,>,>=)
(5) cout<<A; //将字符串A输出到输出流
(6) cin>>A;  //将输入流输入到字符串A

----------------------<下钻1:string基本成员函数>------------------------
(1) append()  //将某字符串加到主字符串后面(调用者)
例子:
int main()
{
    string Str1("I ");
    string Str2("LOVE ");
    string Str3("JUAN");

    //1.简单连接
    Str1.append(Str2);
    cout << Str1<<"JUAN" << endl;

    //2.起始位置连接(计算机从0数数)
    string Str4("JUANLOVE");
    Str1.append(Str4,4,4);
    cout << Str1 << endl;

    //3.连接字符数组
    char cr[] = {'J','U','A','N'};
    string Str5;
    Str5.append(cr,4);
    cout<<Str5;
    return 0;
}

(2) assign()  //将字符串的内容设定给主字符串
例子:
int main()
{
    string Str1("Simon");
    string Str2("JUAN");
    string Str3;

    Str3.assign(Str2);  //主字符串认领
    Str1.assign(Str2);

    cout<<Str3<<Str1<<endl;
    return 0;
}

(3) at()      //返回某个位置的字符
例子:
int main()
{
    string Str1("Simon");
    char c = Str1.at(4);  //返回某个位置字符

    cout<<c<<endl;
    return 0;
}

(4) begin()   //返回主字符串的起始定位器
    end()     //返回主字符串的终止定位器
例子:
int main()
{
    string Str1("SimonLoveJuan");
    string Str2;
    Str2.append(Str1.begin()+5,Str1.begin()+9); //只要记住数数从0开始数

    cout<<Str2<<endl;
    return 0;
}

(5) compare() //对两个字符串做逐字比较
例子:
int main()
{
    string Str1("Simon");
    string Str2("Juan");
    int state1 = Str1.compare(Str2); //字符串作减法
    int state2 = Str2.compare(Str1);

    string Str3("Juan");
    int state3 = Str3.compare(Str2);

    cout<<state1<<" "<<state2<<endl<<state3<<endl;
    return 0;
}

(6) data()    //返回主字符串的首位置的指针
例子:
int main()
{
    string Str1("Simon");
    string Str2;

    Str2 = Str1.data();

    cout<<Str1<<endl<<Str2<<endl;
    return 0;
}

(7) empty()   //判断数据串是否为空串
例子:
int main()
{
    string Str1("Simon");
    string Str2;

    bool b1 = Str1.empty();  //返回0,非空
    bool b2 = Str2.empty();  //返回1,空

    cout<<b1<<endl<<b2<<endl;
    return 0;
}


(8) erase()  //将容器内的数据清除
例子:
int main()
{
    //1.全部清除
    string Str1("Simon");
    Str1.erase();
    cout<<Str1<<endl;

    //2.根据起始和终止位置
    string Str2("LoveSimonJuan");
    Str2.erase(Str2.begin()+4,Str2.end()-4);
    cout<<Str2<<endl;

    return 0;
}

(9) length() //返回数据串的长度
    size()   //容器的大小
例子:
int main()
{
    string Str1("Simon");
    int Length = Str1.length();
    int Size = Str1.size();
    cout <<Length<<" " <<Size<<endl;

    return 0;
}

(10) find()    //找子字符串第一个出现的位置
     rfind()   //从后往前找
例子:
int main()
{
    string Str1("Simon very love JuanJuan.");
    string Str2("Juan");

    int position1 = Str1.find(Str2,5);  //主字符串查找子字符串,从第pos个位置开始找
    int position2 = Str1.rfind(Str2);   //从后往前找
    cout <<position1<<endl<<position2<<endl;

    return 0;
}


(11) insert()  //将数据插入到某个特定的位置
例子:
int main()
{
    string Str1("Simon very love GuiJuan.");
    string Str2("Juan");

    Str1.insert(5,Str2);  //主字符串从第5个位置插入字符串2
    cout <<Str1<<endl;

    return 0;
}

(12) substr() //返回裁剪后的串指针
例子:
int main()
{
    string Str1("Simon very love JuanJuan.");
    string Str2;

    Str2 = Str1.substr(16,8);  //截取子串,起始位置pos,大小n
    cout <<Str2<<endl;
    return 0;
}

(13) swap()   //将两个串的内容互换
例子:
int main()
{
    string Str1("Simon very love JuanJuan.");
    string Str2("JuanJuan");

    Str1.swap(Str2);  //交换两个字符串
    cout <<Str1<<endl<<Str2<<endl;
    return 0;
}

(14) getline()  //取得用户输入的一行字符串
int main()
{
    string Str1;
    getline(cin,Str1);

    cout <<Str1<<endl;
    return 0;
}
---------------------------------------------------------------
(1) A+B   //将字符串A与字符串B做合并
例子:
int main()
{
    string Str1("I Love ");
    string Str2("JuanJuan");
    string Str3 = Str1+Str2;

    cout <<Str3<<endl;
    return 0;
}

相关文章推荐

今日学习札记——<string>模板类(11.17)

1.string 的定义:typedef basic_string string; 所以,我们只要利用string关键字,就能生成一个以basic_string模板类 所衍生而出的对象。 范例1:...

今日学习札记——STL常用容器:vector、list、set和multiset、map和multimap(11.17)

1.vector,头文件#include (1) 声明方法:vector 变量; 范例: int main() {     vector IntArray(3); IntArray[0]...

今日学习札记——C++Primer补充1(11.7)

1. cout   cin     > 2. 字符串字面值常量,是用一对双引号包围的字符序列。 3. std::cout, 作用域操作符(::)指出我们想使用的定义在命名空间std中。 4...

今日学习札记——C++程序设计1(11-02)

今日学习札记--C++程序设计1 1. 图1 2. C和C++ - 超集 - C++支持C所支持的全部编程技巧 - 任何C程序都能被C++用基本相同的方法编写,并具有相同的开销(时间、空间) ...

今日学习札记——需求工程基础(11.4)

1. 需求技术发展历程 无需求处理 -> 草图分析 -> 需求分析DFD/ERD -> 需求分析面向对象 机器为中心                           应用为中心          ...

今日学习札记——C语言指针与程序风格(11.6)

1. 指针数组和数组指针 - 指针数组:它的属性是一个数组,数组的元素都是指针。“存指针的数组” - 数组指针:它的属性示一个指针,它指向一个数组。在32位系统下它永远是4个字节。“指向数组的指针...

今日学习札记——数据结构基础(11.7)

1. Data can divided into two classes: 1)numerical data: int, float, complex,... 2)non-numerical data...

今日学习札记——C语言一些基本语法(11.6)

1. 定义与声明 - 什么是定义:所谓定义就是编译器创建一个对象,为这个对象分配一块内存并给它取一个名字,这个名字就是我们经常所说的变量名或对象名。 这个名字一旦和这块内存匹配起来,它们就同生共死...

今日学习札记--C++程序设计2(11.3)

1. 函数 - 函数的执行机制 1) 建立被调用函数的栈空间 2) 参数传递 2.1) 值传递(call by value) 2.2) 引用传递(call by reference) 3) 保存调用函...

Java学习札记14:一个比较String、StringBuffer和StringBuilder之间效率差别的简单例子

String:定长的字符串,它的内容是不可以改变的,正因为如此,编译器可以让字符串共享。 StringBuffer:可变长的字符串缓冲区,多线程操作是安全的,并且在字符串连接操作上提供了性能...
  • L_YQing
  • L_YQing
  • 2012年08月08日 20:37
  • 665
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:今日学习札记——<string>初步(11.17)
举报原因:
原因补充:

(最多只允许输入30个字)