C++基礎::函式、類、型別所在的標頭檔案 && 介面的介紹

Inside_Zhang發表於2015-11-13

除非特別說明,所在的名稱空間均是:標準名稱空間,也即std

stuff header 說明
ifstream
ofstream
fstream
<fstream> 檔案流
in>>
out <<
istringstream
ostringstream
stringstream
<sstream 字串流
<shared_ptr>
<unique_ptr>
<memory> <memory>是標準名稱空間的標頭檔案
<boost\shared_ptr.hpp>標頭檔案,名稱空間為boost也有智慧指標的定義
pair <utility>
complex <complex>
numeric_limits <limits>
accumulate <numeric>
ptrdiff_t <crtdef.h>
size_t <cstddef>
unordered_map
unordered_mulitmap
<unordered_map>
unordered_set
unordered_multiset
<unordered_set>
is_pointer(模板結構體)
is_integral(模板結構體)
<type_traits>
ifstream
ofstream
<fstream>
pair <utility>
tuple <tuple>
for_each <algorithm>
getline <string> while(std::getline(in, str, ‘\n’)){…}
第三個引數(分隔符)的型別為char,而不是string
setw <iomanip> cout << setw(10) << left << …

介面

沒有pair_size和pair_element,pair物件也統一交由tuple_like介面(tuple_size、tuple_element)管理。

  • tuple_size:返回引數個數,

  • tuple_element:返回每一位上的型別,第一個模板引數為非型別模板引數

typedef std::tuple<int, float, std::string> TupleType;
cout << std::tuple_size<TupleType>::value << endl;
std::tuple_element<2, TupleType>::type s("hello world");

1. C 標頭檔案

stuff header 說明
malloc <stdlib.h>
exit <cstdlib.h>
strlen <string.h> <string>也給出了該函式的實現
自然無需在std的名稱空間中
typeid <typeinfo> 但不在std標準名稱空間中
getch()/_getch() <conio.h> Console Input/Output(控制檯輸入輸出)的簡寫

2. C++ 標頭檔案

stuff header 說明
min/max algorithm std

3. cstdlib ⇒ exit()

void exit(int code);

錯誤碼主要有:

#define EXIT_SUCCESS    0
#define EXIT_FAILURE    1
std::ifstream ifs(filename);
if (!ifs.good())
{
	std::cerr << "cannot open the input file \"" << filename << "\"" << std::endl;
	exit(EXIT_FAILURE);
}

4. typeid

int fputs(const char*, FILE* );

為什麼可將標準輸入輸出(stdin/stdout)賦值給fputs的第二個引數,可見stdin/stdout的真實資料型別應是FILE*,使用typeid一試便知:

printf("%s\n", typeid(stdout).name());
printf("%s\n", typeid(FILE*).name());

5. toupper/tolower

所在的標頭檔案 :

#include <ctype.h>		// C
#include <cctype>		// C++

函式宣告:

int toupper(int c);

使用:

char(toupper('a'))	⇒ 'A'

相關文章