zoukankan      html  css  js  c++  java
  • std::string 是什么

    #include "stdafx.h"
    #include <iostream>
    #include <string>
    using std::cout;
    using std::endl;
    using std::cin;
    using std::string;
    int main(void)
    {
        char chars1[20];
        char chars2[20] = "jaguar";
        string str1;
        string str2 = "pather";
        cout << "Enter a kind of feline: " << endl;
        cin >> chars1;
        cout << "Enter another kind of feline: " << endl;
        cin >> str1;
        cin.get();
        return 0;
    }

    上面的程序如果没有#include<string>,则cin>>str1将会报错,而string str1不会报错,那么std::string是在哪里定义的?

    头文件之间的包含关系如下

    #include <iostream>

    #include <istream>

    #include <ostream>

    #include <ios>

    #include <xlocnum>

    #include <cstdio>

    #include <yvals.h>

    在iostream里,使用了宏_STD_BEGIN,该宏是定义在yvals.h里的

    但是这里面却没有找到string的定义,后来发现std::string是定义在<xstring>里

    #include <iostream>

    #include <istream>

    #include <ostream>

    #include <ios>

    #include <xlocnum>

    #include <streambuf>

    #include <xiosbase>

    #include <system_error>

    #include <stdexcept>

    #include <xstring>  

    <xstring>通过引用#include <xmemory0>,间接又引用了yvals.h,得以使用_STD_BEGIN宏,将许多类型加入到命名空间std,其中就包括了string

  • 相关阅读:
    构造函数详解
    左值和左值引用、右值和右值引用
    Lambda函数
    std::thread详解
    运算符重载
    友元函数和友元类
    xadmin list_filter 外键数据不显示
    中缀表达式转后缀表达式
    Centos 7 minimal 联网
    python 运用三目判断对象中多个属性 有且非空
  • 原文地址:https://www.cnblogs.com/heben/p/9383704.html
Copyright © 2011-2022 走看看