什么是std ::与cout和endl一起使用?

时间:2016-03-06 00:16:06

标签: c++ std

我的程序最初使用的是using namespace std;,但我听到很多人都认为这是糟糕的编程习惯,所以我想打破习惯。我将计划中的所有coutendl更改为std::coutstd::endl;

coutendl之外,使用命名空间std的是什么?例如:我的程序中有向量和字符串;他们使用std::吗?

如果不太长或太麻烦,列表会很好。

4 个答案:

答案 0 :(得分:6)

  

例如:我的程序中有向量和字符串;他们使用std::吗?

是。矢量和字符串是标准库的一部分。 std命名空间的成员位于standard library

  

如果不太长或太麻烦,列表会很好。

我不能给你一个冗长,简洁的清单。但我可以告诉你如何找到标准库的成员。例如,请回答您的其他问题。字符串和向量是标准库的一部分吗?

http://en.cppreference.com/w/

如果我们到这里,点击'Strings library',我们可以看到我们可以在C ++程序中使用的不同类型的字符串。对于向量,此过程是相同的,在“容器库”部分下,我们可以看到vectorlistmap等。

如果您有IDE,还可以通过使用std:: -

为您的语句添加前缀来查看标准库的成员

enter image description here

虽然您必须包含匹配的头文件才能看到标准库的成员,但标题按照您的预期命名,

#include <list>
#include <vector>
#include <string>

答案 1 :(得分:2)

将整个std命名空间转储到您的程序中可能不是最明智的选择,但我不会因使用std中的特定元素而感到困扰。因此,不是写using namespace std,而是可以使用using std::coutusing std::endl等。在我看来,不得不批准很多代码并不能提高可读性。

至于std中的内容,这是一个非常长的列表,包括所有STL。只是尝试编译并查看编译器抱怨的位置。

答案 2 :(得分:1)

简而言之:
对于C ++标准库中的所有

包括数据结构,算法,输入输出函数,type_traits,字符串操作,几乎可以在C标准库中找到的所有内容....你可以找到一个列表,例如在cppreference.com

答案 3 :(得分:1)

C ++标准库提供的几乎所有类型和函数都在命名空间std中。粗略地说,这包括标准标题中的所有内容,其文件名中没有.h - 例如<vector><iostream>(带来std::cout),<string>({ {1}}),std::string(标准算法)和其他标准C ++头文件。它不包括C标准库(<algorithm><stdio.h>等),尽管它们在C ++标准库(<stdlib.h><cstdio>等)中具有等价物将他们的声明放入名称空间<cstdlib>

编写清单毫无意义。如果您使用的是C ++标准库的任何部分,那么您将使用命名空间std。因此,对C ++标准库的任何引用都是事实列表。

有一些例外(例如标准标题中的名称被指定为宏)但这些很少见。