2017-06-17 8 views
-1

O.K.だから、私がやろうとしているのは、greeterというクラスを作成し、現在のユーザ名を取得して、それを "Hello(ユーザ名)"というfuntionに渡します。C++クラス内でユーザー名を取得し、関数に渡す

私はこれまで持っていることはこれです:

#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; 
     } 

「名前は」origionallyユーザー入力から引数として関数に直接渡すことするつもりだったが、

user.hello() 

はしません変数 "name"を受け入れてください。私はむしろプログラムで、ユーザー名を取得します。だから私の質問は、どのように自分自身のユーザー名を取得し、変数からuser.hello()に渡すC++を得ることができます

+0

あなたはどのようなプラットフォームをターゲットしていますか?異なるOSは異なる方法でユーザを実装し、異なるAPIを提供してユーザ情報を問い合わせます。あなたのためにこれを処理するために、C++自体またはSTLには何もありません。 –

+0

好きなのは、クロスプラットフォームのソリューションですが、私のシステムはLinuxなので、それでLinuxの場合は "一桁のサイズ"にすることはできません。 – Josh

+0

クラスを理解するのに役立つ実用的なプロジェクトはありません – Josh

答えて

1

現在のユーザーの名前を取得するにはstd::getenvを使用できます。 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; 
} 
+0

エラー:名前空間std – Josh

+0

@Joshのメンバー "getenv"がないので、ファイルに '#include 'を追加する必要があります。 –

+0

おかげビルダー(IDE)は、任意のより多くのエラーを与えていないのではなく、GCCは言う:エラー: 'int型のmain()' 関数でコールに該当する機能を 'に迎える::こんにちは(のconstのchar *&') user.helloを(名); ^ 注:候補:無効挨拶::こんにちは()(ハロー がvoid) ^ ~~~~ 候補は0引数、1がhttp://ideone.com/Y48u7Xを見にサンプルプログラムを取る – Josh

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; 
} 
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; 
} 
関連する問題