2013-09-29 150 views
0
#include <cctype>     // Character testing and conversion 
using std::cin; 
using std::cout; 
using std::endl; 

int main() { 
    char letter = 0;     // Store input in here 

    cout << endl 
     << "Enter a letter: ";  // Prompt for the input 
    cin >> letter;     // then read a character 


    if(std::isupper(letter)) {    // Test for uppercase letter 
    cout << "You entered a capital letter." 
     << endl; 
    cout << "Converting to lowercase we get " 
     << static_cast<char>(std::tolower(letter)) << endl; 
    return 0; 
    } 

    if(std::islower(letter)) {    // Test for lowercase letter 
    cout << "You entered a small letter." 
     << endl; 
    cout << "Converting to uppercase we get " 
     << static_cast<char>(std::toupper(letter)) << endl; 
    return 0; 
    } 
    cout << "You did not enter a letter." << endl; 
    return 0; 
} 

在這個例子中,使用'std ::'if(std::isupper(letter)) {而不使用'std ::'if(isupper(letter)) {?有什麼區別?這兩個區別?

我都嘗試和他們返回相同的結果,所以我不知道什麼是使用的效益「的std ::」

+3

沒有std ::,你會從當前範圍調用一個名爲isupper()的函數,如果沒有,從全局命名空間(:: isupper())。編寫std :: isupper()引用命名空間std中的函數名稱isupper()。 – namezero

+2

@namezero不,如果你是愚蠢的,並使用'使用命名空間標準;' –

+2

一些細微的差異。 'std :: isupper()'[here](http://www.cplusplus.com/reference/locale/isupper/)和'isupper()'[here](http://www.cplusplus.com/reference/cctype/isupper /)。 – Jamal

回答

0

發帖namezero用戶評論:

沒有的std :: ,你將從當前範圍調用一個名爲isupper()的函數,並且如果沒有,則從全局命名空間(:: isupper())中調用。寫std :: isupper()是指名字空間中的函數名isupper()std