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

  • 相关阅读:
    生活感悟
    shell语法
    mycat
    阐述 如何高效理解学习
    部署ETCD集群
    文件修改
    文件处理
    a's
    shell中备份web站点及数据库
    openssh版本升级修复漏洞
  • 原文地址:https://www.cnblogs.com/heben/p/9383704.html
Copyright © 2011-2022 走看看