欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

什么是 std::string

最编程 2024-04-02 17:48:07
...
#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