3.2 标准库类型string(上)

#include <string>
#include <iostream>
using std::string;
using std::cin;
using std::cout;
using std::endl;

//string定义在命名空间std中
int main()
{

/**************3.2.1 定义和初始化string*****************/

    string s1;                          //默认初始化,S1是一个空字符串
    string S2 = s1;                     //S2时S1的副本
    string s3 = "hello lijun";          //S3是字面值hello lijun的副本

    /*注意:
    1,什么叫string?
       可变长的字符序列
    2,什么叫字面值?
    3,字符串字面值结尾的空字符不会被赋给字符串
      空字符是字符串的终止符尔不是字符序列的终止符
      */

    /*直接初始化和拷贝初始化
    当初始值只有一个时使用直接初始化或拷贝初始化都是可以的
    多值初始化做好用拷贝初始化*/

    string s4(10, ‘a‘);                 //s4的内容是10和c
    //string s4(1,"hello lijun");       //错误

    string s5(s4);                      //s4是s1的副本,与9 line类似
    string s6("hello lijun");           //s3是字面值“hello lijun"的副本
    //string s6(hello lijun);           错误
    string s7 = string (10, ‘a‘);       //显示的创建一个临时对象用于拷贝
    /*
    其效果等价于:string temp (10, ‘a‘)
               string s7 = temp;
    */

    /*******************3.2.2 string对象上的操作**************/

    //一个类除了要定义初始化方式外还需要定义对象上所能执行的操作。

    //-------1读写操作-----------
    string s;
    cin >> s;
    cout << s << endl;
    //在执行读取操作时,string会自动忽略开头的空白(空格,换行,制表等)
    //并从第一个真正的字符开始读起,知道遇见下一个空白为止。
    //返回左侧的运算符作为运算结果


//-------2读取未知数量的string对象-----------
    string word;
    while ((cin >> word) && (word != "END"))//自动以END作为结束标志符
        cout << word << endl;
    //注意字符串中含有空格时的输出

    //-------3使用getline 读取一整行-----------
    //-------empty和size的用法-----------
    //s.empty()根据string对象是否为空返回一个对应的bool变量
    //s.zize()函数返回string的长度
    //其实s.zize()返回的是string::size_type类型,这是一种新的类型
    //string类及其它大多数标准库类型都定义了几种配套的类型
    //这些配套类型体现了标准库类型的机器无关性
    //所有用于存放string类的size函数返回值的变量都应该用string::size_type类型
    //s.zize()返回的是unsigned类型的值,不可用int混用

    string line;
    while (getline(cin, line, ‘#‘))//注意结束标志位
    {
        if (!line.empty())                    //只输出非空行
        {
            cout << line << endl;

        }
        auto len = line.size();
        cout << len;
    }

    return 0;
}
时间: 2024-10-27 09:30:28

3.2 标准库类型string(上)的相关文章

谈谈两种标准库类型---string和vector

两种最重要的标准库---string和vector string和vector是两种最重要的标准库类型,string表示可变长的字符序列,vector存放的是某种给定类型对象的可变长序列. 一.标准库类型string   1.定义和初始化string对象:初始化string对象的方式有 string s1   默认初始化,s1是一个空串   string s2(s1)   s2是s1的副本 string s2=s1   等价于s2(s1),s2是s1的副本 string s3("value&qu

C++标准库类型string

string类表示可变长字符序列,包含在头文件string中,作为标准库的一部分string定义在std命名空间中 1.初始化string对象 std::string s1;//默认初始化s1是个空字符 std::string s2 = s1;//s2是s1的副本 std::string s3 = "hello";//s3是该字符串字面值的副本 std::string s4(10,'h');s4的内容是hhhhhhhhhh 直接初始化和拷贝初始化 初始化时用到=号的就是拷贝初始化,其在

3.2 标准库类型string(下)

#include <iostream> #include <string> using std::cin; using std::cout; using std::endl; using std::string; /*------------------范围for语句----------------*/ /* for(declartion:expression) statement expression部分是一个对象,用于表示一个序列. declartion部分负责定义一个变量,该

标准库类型String

string对象中每个字符的处理: 要用到 for(声明:表达式) 语句 比如简单的打印string str中每一个字符 --- string str("hello world!!!"); for(auto c: str)cout<<c<<endl; (ps:这里auto 的意思是让编译器自己来决定c变量的类型) --- 再举一个例子统计string str的标点符号数目 string str("hello world!!!"); declt

【C++ Primer每日一刷之五】标准库类型小结

标准库类型小结 C++ 标准库定义了几种更高级的抽象数据类型,包括 string 和 vector 类型.string 类型提供了变长的字符串,而 vector 类型则可用于管理同一类型 的对象集合.迭代器实现了对存储于容器中对象的间接访问.迭代器可以用于访问和遍历 string 类型和vectors 类型的元素.下一节将介绍 C++ 的内置数据类型:数组和指针.这两种类型提供了类似于 vector 和 string 标准库类型的低级抽象类型.总的来说,相对于C++ 内置数据类型的数组和指针而言

C++ Primer 学习笔记_6_标准库类型 -- 命名空间using与string类型

 标准库类型(一) --命名空间using与string类型 引: 标准库类型是语言组成部分中更基本的哪些数据类型(如:数组.指针)的抽象! C++标准库定义的是高级的抽象数据类型: 1.高级:因为其中反映了更复杂的概念: 2.抽象:因为我们在使用时不需要关心他们是如何表示的,我们只需要知道这些抽象数据类型支持哪些操作就可以了. 正文: 一.命名空间的using声明 1. using std::cin; ::运算符的作用含义是右操作数的名字可以在左操作数的作用域中找到. 格式: [cpp]

C++拾遗(二)——初窥标准库类型

本篇博文的开始,先介绍一道书上看到的智力题:有20瓶药丸,其中19瓶装有1克/粒的药丸,余下一瓶装有1.1克/粒的药丸.有一台称重精准的天平,只是用一次天平的情况下如何找出比较重的那瓶药丸? 好了,直接公布答案.从药瓶#1取出一粒药丸,从药瓶#2取出两粒,从药瓶#3取出三粒,依此类推.如果每粒药丸均重1克,则称得总重量为210克(1 + 2 + … + 20 = 20 * 21 / 2 = 210),“多出来的”重量必定来自每粒多0.1克的药丸.药瓶的编号可由算式(weight - 210 gr

标准库类型vector

标准库类型vector表示对象的集合,其中所有对象的类型都相同.集合中的每个对象都有一个与之对应的索引,索引用于访问对象.因为vector“容纳着”其他对象,所以它被称为容器. 要想使用vector,必须包含适当的头文件.#include<vector> C++语言既有类模板,也有函数模板 ,其中vector是一个类模板. 模板本身不是类或函数,相反可以将模板看作为编译器生成类或者函数编写的一份说明.编译器根据模板创建类或函数的过程成为实例化,当使用模板时,需要指出编译器应把类或函数实例化为何

C++ Primer 学习笔记_9_标准库类型(续3) -- biteset

 标准库类型(四) --biteset 序言: 位是用来保存一组项或条件的yes/no信息[标识]的简洁方法. [cpp] view plaincopyprint? #include <bitset> using std::bitset; #include <bitset> using std::bitset; 正文: 1.bitset对象的定义和初始化 和vector对象不同的是:bitset类型对象的区别在于其长度而不是类型.在定义bitest时,要在尖括号中说明给出他的长