Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/163.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ c++;获取类中的用户名并将其传递给函数_C++_Open Source - Fatal编程技术网

C++ c++;获取类中的用户名并将其传递给函数

C++ c++;获取类中的用户名并将其传递给函数,c++,open-source,C++,Open Source,好的,我要做的是创建一个名为greeter的类,让它获取当前用户名,然后将其传递给一个函数,该函数会说“Hello(username)” 到目前为止,我得到的是: #include <iostream> #include <string> using namespace std; class greet { public: void hello(string name) { cout << "Hello, " +

好的,我要做的是创建一个名为greeter的类,让它获取当前用户名,然后将其传递给一个函数,该函数会说“Hello(username)”

到目前为止,我得到的是:

#include <iostream>
#include <string>

using namespace std;


class greet
    {
    public:

    void hello(string name)
    {
    cout << "Hello, " + name + "!" << endl;
    }
    };

  int main()
      {
      greet user;
      user.hello(name);
      return 0;
      }
我不接受变量“name”,我希望程序自己获得用户名。所以我的问题是,我如何获得C++在它自己的名称上的用户名,并将它从一个变量传递给用户。Linux的环境变量是
“USER”
。Windows的环境变量是
“USERNAME”

在Linux上,以下操作应该有效

int main()
{
   greet user;
   char const* name = std::getenv("USER");

   // Windows
   // char const* name = std::getenv("USERNAME");

   user.hello(name);
   return 0;
}
#包括
#包括
#包括
使用名称空间std;
班级问候
{
公众:
void hello(字符串用户)
{
不能包含
#包括
#包括
使用名称空间std;
班级问候{
私人:
字符串userName()常量{
静态字符串user=getenv(
#ifdef WIN32
“用户名”
#否则
“用户”
#恩迪夫
);
返回用户;
}
公众:
void hello(){

不同的OSE实现用户不同,并提供不同的API来查询用户信息。C++本身或STL没有任何东西可以处理这个问题。Preferabley是一个跨平台的解决方案,但是我的系统是Linux,所以如果它不能“一刀切”的话。然后是Linux。我不是一个实用的项目,只是为了帮助我理解类。不要将你的问题标题改为“已解决”。如果有帮助,请接受答案,或者发布你自己的答案。@Josh,你需要将
#include
添加到你的文件中。谢谢构建器(IDE)没有给出更多错误,但gcc说:在函数“int main()”中:错误:对“greet::hello(const char*&)”用户的调用没有匹配的函数。hello(name);^note:candidate:void greet::hello()void hello()^~~~~候选者需要0个参数,提供1个。请查看示例程序。由于未定义环境变量
“USER”
,因此它没有在那里运行。但它构建得很好。这几乎正是我遇到该错误时遇到的情况(缩进方式不同)。我尝试了其他方法,但出现了太多错误,因此我复制/粘贴了该示例,建议我将“name”重命名为“rename”好的。将其重命名为rename,编译和运行良好
int main()
{
   greet user;
   char const* name = std::getenv("USER");

   // Windows
   // char const* name = std::getenv("USERNAME");

   user.hello(name);
   return 0;
}
#include <iostream>
#include <cstdlib>
#include <string>

using namespace std;
class greet
{
   public:

      void hello(string user)
      {
         cout << "Hello, " + user + "!" << endl;
      }
};

int main()
{
   greet user;
   char const* USER = std::getenv("USER");
   user.hello(USER);
   return 0;
}
#include <iostream>
#include <string>
#include <cstdlib>

using namespace std;

class greet {
private:
    string userName() const {
        static string user = getenv(
            #ifdef WIN32
            "USERNAME"
            #else
            "USER"
            #endif
        );
        return user;
    }

public:
    void hello() {
        cout << "Hello, " + userName() << "!" << endl;
    }
};

int main() {
    greet user;
    user.hello();
    return 0; 
}