什么是 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
推荐阅读
-
为什么是YUV420?------- YUV数据格式解析
-
易懂的解释:什么是YUV文件格式?
-
Cloud Call Center的 400 电话怎么选号?到这一步下一步是干什么? -问答-阿里云开发者社区-阿里云
-
在线编辑协同文档爆火的背后到底是为什么?
-
金三银四跳槽,什么样的Leader是好Leader
-
Linux 的磁盘挂载 | 详解-二、什么是挂载
-
Linux挂载详解:搞明白什么是挂载
-
什么是挂载,Linux挂载详解-纠正一个误区,并不是根目录下任何一个目录都可以作为挂载点,由于挂载操作会使得原有目录中文件被隐藏,因此根目录以及系统原有目录都不要作为挂载点,会造成系统异常甚至崩溃,挂载点最好是新建的空目录。
-
什么是代码中的魔鬼数字,如何解决?
-
科普什么是JS混淆加密解密以及其价值