C++标准库概述

一、C++标准库的主要组件:

1、标准C库

2、I/O流技术(对标准输入输出设备称为标准I/O,对在外磁盘上文件的输入输出称为文件I/O,对内存中指定的字符串存储空间的输入输出称为串I/O)

3、string类模版

4、容器(vector、list、queue、stack、deque、map、set和bitset)

5、算法

6、对国际化的支持

7、对数字处理的支持

8、诊断支持(3中报错方式:C的断言、错误号、例外)

二、I/O流技术

C++为实现数据的输入输出定义了一个庞大的类库,它包括的类主要有ios、istream、ostream、iostream、ifstream、ofstream、fstream、istrstream、ostrstream、strstream等,其中ios为根基类,其余的都是它的直接或者间接派生类。

ios直接派生四个类:输入流iostream、输出流ostream、文件流基类fstream和字符串基类strstream.

通过上面的介绍很容易理解C++中的I/O流库都包含在iostream、fstream、strstream这三个类库文件中。

C++不仅仅提供了上面的三个类库,还为用户提供了提供了标准I/O操作中的类对象,分别是cin、cout、cerr、clog

格式控制操作符:

#include <iostream> //其实iomanip中包含iostream,所以该行可省略
#include <iomanip>
using namespace std;

int main(){
    int x = 30, y = 300, z = 1024;
    cout << x << ‘ ‘ << y << ‘ ‘ << z << endl;
    //八进制输出
    cout << oct << x << ‘ ‘ << y << ‘ ‘ << z << endl;
    //十六进制输出
    cout << hex << x << ‘ ‘ << y << ‘ ‘ << z << endl;
    //设置提示符和字母大写输出
    cout << setiosflags(ios::showbase | ios::uppercase);
    cout << x << ‘ ‘ << y << ‘ ‘ << z << endl;
    cout << resetiosflags(ios::showbase | ios::uppercase);
    cout << x << ‘ ‘ << y << ‘ ‘ << z << endl;
    //按十进制输出
    cout << dec << x << ‘ ‘ << y << ‘ ‘ << z << endl;

    return 0;
}

自定义流操作符:

#include <iostream>
using namespace std;

ostream &lin(ostream &myos){
    return myos << "\n-----------------";
}

int main(){
    cout << lin << lin << lin << endl;
    return 0;
}

I/O操作符重载:

#include <iostream>
#include <string.h>
using namespace std;

class Student{
    friend ostream& operator << (ostream& ot, Student& popup);
    char name[10];
    unsigned int age;
    unsigned long num;
public:
    Student(char *na, unsigned int al, unsigned long number):age(al),
        num(number){
        strcpy(name, na);
    }
};

ostream& operator << (ostream& ot, Student& popup){
    ot << "Name:" << popup.name << endl << "Age:" << popup.age << endl
        << "Number:" << popup.num << endl << "---------------------" << endl;
    return ot;
}

int main(){
    Student a("Wang", 18, 1234), b("zhao", 19, 4312), c("liu", 20, 2341);
    cout << a << b << c;

    return 0;
}

写入文件:

#include <iostream>
#include <stdlib.h>
#include <fstream>
using namespace std;

int main(void){
    //定义输出文件流,并打开相应的文件
    ofstream f1("a:wr1.dat");
    if(!f1){
        cerr << "a:wr1.data file not open!" << endl;
    }
    for(int i=0; i<21 ; i++){
        f1 << i << ‘ ‘;
    }
    f1.close();
    return 0;
}

读文件内容:

#include <iostream>
#include <std.ib.h>
#include <fstream>

int main(){
    //规定打开的文件时输入文件,若文件不存在则返回打开失败信息
    ifstream f1("wrl.dat", ios::in | ios::nocreate);
    //当f1打开失败时进行错误处理
    if(!f1){
        cerr << "wr1.data file not open!" << endl;
        exit(1);
    }
    int x;
    while(f1 >> x)
        cout << x << ‘ ‘;
    cout << endl;
    f1.close();

    return 0;
}

输入输出流操作:

#include <iostream>
#include <strstream>
using namespace std;

int main(){
    char a[50];
    char b[50];
    istrstream sin(a); //定义一个输入字符串流sin,使用的字符数组为a
    //定义一个输出字符串流sout,使用的字符数组为b
    ostrstream sout(b, sizeof(b));
    //从键盘上输入字符
    cin.getline(a, sizeof(a));
    char ch = ‘ ‘;
    int x;
    while(ch !=‘@‘){
        //使用‘@‘字符作为字符串流结束标志
        if(ch >= 48 && ch <= 57){
            //将字符压入流中
            sin.putback(ch);
            sin >> x;
            //存入输出流
            sout << x << ‘ ‘;
        }
        //每次取出一个字符
        sin.get(ch);
    }
    sout << ‘@‘ << ends;
    //输出输出流的内容
    cout << b;
    cout << endl;

    return 0;
}

构造字符串:

#include <string>
#include <iostream>
using namespace std;

int main(){
    string Mystring1(10, ‘ ‘);
    string Mystring2 = "This is a string";
    string Mystring3(Mystring2);
    cout << "string1 is : " << Mystring1 << endl;
    cout << "string2 is : " << Mystring2 << endl;
    cout << "stirng3 is : " << Mystring3 << endl;

    return 0;
}

字符串判断函数:

1、empty()

2、length()

3、resize()改变长度

#include <iostream>
#include <string>
using namespace std;

int main(){
    string TestString = "ll11223344565666";
    cout << TestString << "\n size: " << TestString.length() << endl;
    TestString.resize(5);
    cout << TestString << "\n size: " << TestString.size() << endl;
    TestString.resize(10);
    cout << TestString << "\n size: " << TestString.size() << endl;
    TestString.resize(15, ‘6‘);
    cout << TestString << "\n size: " << TestString.size() << endl;

    return 0;
}

4、append()

5、c_str()

#include <string>
#include <iostream>
using namespace std;

int main(){

    string str1("012");
    string str2("345");
    cout << "str1 = " << str1.c_str() << endl;
    cout << "str2 = " << str2 << endl;
    //把字符串str2增加到str1尾部
    str1.append(str2);
    cout << "str1 = " << str1 << endl;
    //返回的是一个常量指针
    const char* ch = str1.c_str();
    for(int i=0; i<str1.length(); i++){
        cout << ch[i] << ‘ ‘;
    }
    cout << endl;
    str1.append(str2.c_str(), 2); //把字符串中的前两个元素插入到str1尾部
    str1.append(1, ‘A‘);
    str1.append(str2.begin(), str2.end());
    cout << "str1 = " << str1 << endl;
    cout << endl;

    return 0;
}

字符和字符串连接

#include <string>
#include <iostream>
using namespace std;

int main(){
    string result;
    string S1 = "ABC";
    string S2 = "DEF";
    char CP1[] = "GHI";
    char C = ‘J‘;
    cout << "S1 is " << S1 << endl;
    cout << "S2 is " << S2 << endl;
    cout << "C is " << C << endl;
    result = CP1 + S1;
    cout << "CP1 + S1 is " << result << endl;
    result = S1 + C;
    cout << "S1 + C is " << result << endl;
    result = S1 + S2;
    cout << "S1 + S2 is " << result << endl;
    result = CP1 + C + S1;
    cout << "CP1 + C + S1 is " << result << endl;
    result = S1 + CP1 + C;
    cout << "S1 + CP1 + C is " << result << endl;

    return 0;
}

字符串迭代:

#include <string>
#include <iostream>
#include <algorithm>
using namespace std;

int main(){
    const string hello("Hello, how are you?");
    string s(hello.begin(), hello.end());
    cout << "s : " << s << endl;
    string::iterator pos;
    for(pos = s.begin(); pos != s.end(); ++pos){
        cout << *pos << ‘ ‘;
    }
    cout << endl;
    //字符串翻转
    reverse(s.begin(), s.end());
    cout << "reverse: " << s << endl;
    //去除重复元素
    s.erase(unique(s.begin(), s.end()), s.end());
    cout << "no duplictes: " << s << endl;
}
时间: 2024-10-16 11:02:46

C++标准库概述的相关文章

程序设计语言-标准库概述

1 认识标准库 没有任何一个重要程序只用某种赤裸裸的程序设计语言写出的:首先总要开发出一组支持库,这也形成了进一步工作的基础. 2 第一个程序 #include<iostream>  //指编译器包含位于iostream里的标准流I/O功能的声明 int main() //定义一个main()函数,该函数没有参数,也不做任何事情 { std::cout<<"hello,world!\n"; //字符串文字量"hello,world!\n"将被

C++标准库概述 [转]

C++标准库的所有头文件都没有扩展名. C++标准库的内容总共在50个标准头文件中定义,其中18个提供了C库的功能.<cname>形式的标准头文件[<complex>例外]其内容与ISO标准C包含的name.h头文件相同,但容纳了C++扩展的功能.在<cname>形式标准的头文件中,与宏相关的名称在全局作用域中定义,其他名称在std命名空间中声明.在C++中还可以使用name.h形式的标准C库头文件名. C++标准库的内容分为10类: C1.语言支持 :   C2.输入

【C】 06 - 标准库概述

任何程序都会有一些通用的功能需求,对这些需求的实现组成了库.它可以提高程序的复用性.健壮性和可移植性,这也是模块化设计的体现.C规范定义了一些通用接口库,这里只作概述性介绍,具体细节当然还是要查阅规范. 为了提高效率,C的很多库函数会同时有一个宏定义的版本,所以传递参数时尽量使用没有副作用的表达式,以免发生错误.若不想使用宏版本的函数,可以采用三个方法:(1)先undef宏:(2)函数名用括号括起来:(3)不include头文件. // method 1 #include <stdlib.h>

C 标准库系列之概述

基本上很多编程语言都会提供针对语言本身的一系列的标准库或者包,当然C语言同样也有提供标准库,C语言的标准库是一系列的头文件的集合:如assert.h.ctype.h.errno.h.float.h.limits.h.locale.h.math.h.setjmp.h.signal.h.stdarg.h.stddef.h.stdio.h.stdlib.h.string.h.time.h等约15个头文件:另外语言只是制定了标准.规范,故目前不同的厂商.系统可能有不同的标准库实现,如GNU的glibc,

标准库》第三章 包装对象和Boolean对象

第三部分  标准库 ***************第三章   包装对象和Boolean对象******************* 一.包装对象的定义[1]有人说,JavaScript语言"一切皆对象",数组和函数本质上都是对象,就连三种原始类型的值--数值.字符串.布尔值--在一定条件下,也会自动转为对象,也就是原始类型的"包装对象". 所谓"包装对象",就是分别与数值.字符串.布尔值相对应的Number.String.Boolean三个原生对象

第4章 C++STL泛型库概述

/* 第二篇 C++STL泛化技术基础 第4章 C++STL泛型库概述 4.1 C++STL的发展历程 4.2 C++STL的各种实现版本 4.3 C++STL的Visual C++编译 4.4 C++STL的体系结构 4.5 C++STL存在的一些问题 4.6 本章小结 第二篇 C++STL泛化技术基础 第4章 C++STL泛型库概述 4.1 C++STL的发展历程 4.2 C++STL的各种实现版本 4.2.1 HP STL 4.2.2 SGI STL 4.2.3 STLport 4.2.4

走进C++程序世界------IO标准库介绍

流概述 流是C++标准的组成部分,流的主要目标是,将从磁盘读取文件或将输入写入控制台屏幕的问题封装起来,创建流后程序员就可以使用它,流将负责处理所有的细节. IO类库 在C++输入?输出操作是通过C++系统提供的完成I/O操作的一组类实现的.主要包括: 标准流类:处理与标准输入设备(键盘)和输出设备(显示器)关联的数据流 文件流类:处理与磁盘文件关联的数据流 字符串流类:利用内存中的字符数组处理数据的输入输出 异常类等:处理异常错误. 标准IO对象: 包含iostream类的C++程序启动时,将

Boost程序库完全开发指南——深入C++“准”标准库(第3版)

内容简介  · · · · · · Boost 是一个功能强大.构造精巧.跨平台.开源并且完全免费的C++程序库,有着“C++‘准’标准库”的美誉. Boost 由C++标准委员会部分成员所设立的Boost 社区开发并维护,使用了许多现代C++编程技术,内容涵盖字符串处理.正则表达式.容器与数据结构.并发编程.函数式编程.泛型编程.设计模式实现等许多领域,极大地丰富了C++的功能和表现力,能够使C++软件开发更加简捷.优雅.灵活和高效. <Boost程序库完全开发指南——深入C++“准”标准库(

C++ 异常机制分析(C++标准库定义了12种异常,很多大公司的C++编码规范也是明确禁止使用异常的,如google、Qt)

阅读目录 C++异常机制概述 throw 关键字 异常对象 catch 关键字 栈展开.RAII 异常机制与构造函数 异常机制与析构函数 noexcept修饰符与noexcept操作符 异常处理的性能分析 正文 回到顶部 C++异常机制概述 异常处理是C++的一项语言机制,用于在程序中处理异常事件.异常事件在C++中表示为异常对象.异常事件发生时,程序使用throw关键字抛出异常表达式,抛出点称为异常出现点,由操作系统为程序设置当前异常对象,然后执行程序的当前异常处理代码块,在包含了异常出现点的