2012-09-20 43 views
2

在下面的C++程序中,我包含了string.h文件,並且成功實例化了C++字符串類並調用其成員函數之一:size()。爲什麼通過string.h工作訪問C++字符串類?

#include <iostream> 
#include <string.h> 
using namespace std; 

int main() 
{ 
    string s = "Hello"; 
    cout << "String: " << s << endl; 
    cout << "Size of string: " << s.size() << endl; 
    cin.get(); 
    return 0;  
} 

輸出是:

String: Hello 
Size of string: 5 

我使用的開發-C++ 4.9.9.2

我的問題:不將文件string.h文件只是提供的功能操縱C字符串?它不包括C++字符串類的定義權利?那麼,我怎樣才能在不使用#include <string>的情況下訪問C++字符串類?我的理解是string.h文件是C字符串庫文件,<string>包含C++字符串庫文件。這是不對的?

謝謝!

回答

7

這是因爲std::string是通過包含在<iostream>標頭中的一個文件定義的。這些流提供了對字符串輸入和輸出的支持,因此它們需要包含一個字符串標題,以便定義相應的>><<操作。

+0

啊,我明白了。順便說一下,對應於''的文件是什麼?我的意思是,相應文件的名稱和擴展名是什麼? – GigaRohan

+0

@GigaRohan這是與系統相關的:在我的系統(OS X w/gcc編譯器)中,從''包含的文件是'bits/stringfwd.h'。它通過一系列'istream' - >'ios' - >'iosfwd'間接包含在內。 – dasblinkenlight

+0

該標準並不要求它是一個文件,但在我的Mac上它只是'/ usr/include/C++/4.2.1/string'。沒有擴展。 –

相關問題