2015-10-26 80 views
7

這裏是我的代碼:可否使用std :: string #include <string>?

#include <iostream> 

int main(int argc, char const *argv[]) 
{ 
    std::string s = "hello"; 
    std::cout << s.size() << std::endl; 
    return 0; 
} 

令我驚訝,我可以編譯和運行clang++它,但我甚至不加#include <string>

那麼,是否需要添加#include <string>才能使用std::string

回答

1

iostream包括<string>。它漣漪穿過。

那麼實際上這是執行相關的,而不是一個保證。你應該明確地包含你需要的頭文件。

10

您實施的iostream標題包括string。這不是你可以或應該依賴的東西。如果您想使用std::string,則應始終使用#include <string>,否則您的程序可能無法在不同的實現中運行,或者甚至在當前版本的更高版本中運行。

2

某些標題可能包含其他標題,但這是一個實現問題,而不是您可以指望的。始終明確包含您需要的標題。

2

總之:是的,這是必要的。

標準庫的部分經常使用其他部分,所以<string>包含在某種程度上通過<iostream>,您的代碼編譯很好。

如果您意外地決定不再需要<iostream>並刪除包含,<string>也會被隱式刪除,並且您會收到令人困惑的編譯錯誤。這就是爲什麼把所有必要的內容放在一起的好習慣。

相關問題