Is there a portable way in standard C++ to retrieve hostname?

Viewed 307

I'm working on a C++ program that needs to use the hostname of the computer it is running on. My current method of retrieving this is by mangling a C API like this:

char *host = new char[1024];
gethostname(host,1024);
auto hostname = std::string(host);
delete host;

Is there a portable modern C++ method for doing this, without including a large external library (e.g., boost)?

2 Answers

No, there is no standard C++ support for this. You'll either have to make your own function, or get a library that has this functionality.

#include <string>
//#include <winsock.h>      //Windows
//#include <unistd.h>       //Linux

std::string GetHostName(void)
{

    std::string res = "unknown";
    char tmp[0x100];
    if( gethostname(tmp, sizeof(tmp)) == 0 )
    {
        res = tmp;
    }
    return res;
}
Related