2016-06-25 28 views
0

此代碼編譯成功,這是因爲我顯然使用tolower的「全局命名空間」版本(而不是生活在<cctype><locale>的任一版本)其實我不確定嗎?定義的全球託利塔在哪裏以及存在哪些類似的功能?

#include <string> 
#include <algorithm> 

int main() { 
    std::string x = "FOO"; 
    std::transform(x.begin(), x.end(), x.begin(), tolower); 
} 

我的問題:

1)凡/這是怎麼tolower建立到底是什麼?

2)有人可以指示我列出所有這樣的「全局命名空間」功能嗎?

我已經花了相當長的時間尋求答案;道歉,如果這是明顯的知識,我錯過了。

+1

http://en.cppreference.com/w/c/string/byte/tolower –

+3

它可能通過其他頭文件之一(以實現定義的方式)間接引入。 –

回答

1

某些編譯器在std::和全局命名空間中均提供了來自<c__>標頭(來自C標準庫)的聲明。正如@chris所說,這是標準允許的,但沒有保證。因此,你不應該依賴它。

+3

在兩個名稱空間中都包含聲明的一致行爲,但不以任何方式保證。 – chris

+0

@chris謝謝,補充。 – HolyBlackCat

相關問題