C++ 获取linux和windows系统的用户名

来源:互联网 发布:ec6108v9怎么安装软件 编辑:程序博客网 时间:2024/06/07 02:01

(1)获取linux系统的用户名:

 通过 struct passwd *getpwuid(uid_t uid)函数;  该函数返回passwd结构体,此结构体中包含用户名字段
struct passwd {
char *pw_name; /*user name */
char *pw_passwd; /*user password */
uid_t pw_uid; /*user id */
gid_t pw_gid; /*group id */
char *pw_gecos; /*user real name */
char *pw_dir; /*home directory */
char *pw_shell; /*shell program */
};

(2)获取windows系统的用户名:
通过GetUserName( buffer , &len ) 函数

(3)完整的实例(跨平台):
#include <iostream>#include <string>#ifdef linux    #include <unistd.h>    #include <pwd.h>#endif#ifdef _WIN32    #include<Windows.h>#endifstd::string getUserName(){#if defined linux   //linux system    uid_t userid;    struct passwd* pwd;    userid=getuid();    pwd=getpwuid(userid);    return pwd->pw_name;#elif defined _WIN32  //windows system    const int MAX_LEN = 100;    char szBuffer[MAX_LEN];    DWORD len = MAX_LEN;    if( GetUserName(szBuffer, &len) )     //用户名保存在szBuffer中,len是用户名的长度        return szBuffer;#else  //outher system    return "";#endif}int main(){    std::string ss = getUserName();    std::cout << ss << std::endl;    return 0;}
(4)linux系统上gcc编译运行截图