在标准C++中是否有一种可移植的方法来检索主机名
Is there a portable way in standard C++ to retrieve hostname?
我正在开发一个C++程序,该程序需要使用它正在运行的计算机的主机名。我目前检索该程序的方法是通过如下方式破坏C API:
char *host = new char[1024];
gethostname(host,1024);
auto hostname = std::string(host);
delete host;
有没有一种可移植的现代C++方法可以做到这一点,而不包括大型外部库(例如boost(?
不,没有标准的C++支持。您要么必须创建自己的函数,要么获得一个具有此功能的库。
#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;
}
相关文章:
- 是否有一种非间接、非黑客的方式来保证 constexpr 函数仅在编译时可调用?
- 是否有一种可接受的运行线程或按顺序执行的方法
- 在 C++14 中,是否有一种优雅的解决方案可以在可变参数模板中选择可调用和不可调用的类型
- 模板结构可容纳两种类型,但当时只有一种
- 有没有一种方法可以使全局函数/静态成员函数一次可呼出
- 是一种基本类型的挥发性初始化,可观察到的行为
- 一种在编译时用C++根据printf格式检查参数的可移植方法
- OpenGL:混叠是一种可预测且一致的现象吗
- 琐碎的可复制性总是一种伪标准布局
- 试图找出一种可移植的数据保存方法
- 有没有一种方法可以将编译器防火墙(Pimpl)和默认可复制性的优点结合起来
- 有没有一种方法可以为std::map中小于给定键的第一个元素找到反向迭代器
- 我正在寻找一种在从模型中删除并重新添加修改后的可提取对象后操作 iloextract 对象的方法
- 有没有一种可移植的方法可以知道uintptr_t是否在stdint.h中定义
- 有人能推荐一本关于可移植C/C++代码开发的书吗
- 有没有一种方法可以为std::array创建函数模板专用化
- 在c++ 11中,是否有一种方法可以在调用以任何可调用对象(包括绑定方法)作为参数的函数时不需要模板参数
- 是否有一种可编程的方法来估计CPU执行fp操作所需的时间
- c++中是否有一种可移植的方法将stdin重定向为string ?
- Boost::serialization——是否有一种可移植的方法来对std::wstring进行二进制序列化?