I am a beginner in C++. From what I understand, in order to use a name, we have to include the library that consist of that name. Thereafter, we can either prepend the name of the namespace or use the using keyword.
E.g.
Without using keyword:
std::cout << "Hello Word!" << std::endl;
With using keyword:
using namespace std;
cout << "Hello World!" << endl;
I saw a working code sample online that uses the isalpha
name from the locale
library in the std
namespace. However, that sample does not use any of the methods mentioned above.
E.g.
#include <iostream>
#include <locale>
int main() {
std::cout << isalpha('a') << std::endl;
}
Could someone please explain to me why the code still works?
When you include a C++ header for a C library facility, that is, a header <cfoo>
corresponding to a C header <foo.h>
, then the names from the C library are declared in namespace std
. However, additionally it is unspecified whether the names are also declared in the global namespace.
In your case it seems that they are. But you cannot rely on that, nor should you.