私はC++に関する知識を広げるために小さなプロジェクトを作成していましたが、問題が発生しました。ユーザー名を受け入れるとき、私はそれがすでに使用されているかどうかを確認したかったのです。その特定のユーザー名が使用された場合は、ユーザーに質問を再印刷しました。最初のループは正常に動作しますが、それ以降はユーザーのVector内に存在していても何も受け付けません。私の機能ではなく、確認した場合、それは正常に動作しますbのC++での参照とvsの値による関数へのベクトルの受け渡し
bool verify(char * a, vector<User> b){
14 for(int i = 0; i < b.size(); i++){
15 if(strcmp(a, b[i].getUsername()) == 0){
16 return false;
17 }
18 }
19 return true;
20 }
21
22 int main(){
23
24 vector<User> users;
25
26 User us1((char *)"foo", (char *)"bar");
27 users.push_back(us1);
28
29
30 do{
31 cout << "Enter Username: ";
32 scanf(" %s", username);
33
34
35 } while(!verify(username, users));
36
37 return 0;
38 }
しかし、ベクトル&になります。誰かがなぜこれが起こっているのか説明できますか?
User.cpp
User:: User(char * userName, char * passWord){
9
10 this->userName = strdup(userName);
11 this->passWord = strdup(passWord);
12
13 }
14
15 User:: ~User(){
16
17 delete userName;
18 delete passWord;
19
20 }
21
22 void User::getMessage(){
23
24 cout << message << endl;
25 }
26
27 char * User:: getUsername(){
28
29 return userName;
30 }
31
32 char * User :: getPassword(){
33
34 return passWord;
35 }
36
37 void User:: printUser(){
38
39 cout << "User Information" << endl;
40 cout << "Username: "<< userName << endl;
41 cout << "Password: "<< passWord << endl;
42 cout << "Messages: "<< ((message == NULL) ? "User has no messages\n" : "User has 1 message\n");
43
44 }
です。 'std :: string'はあなたの友人です。 –
私の推測では 'User'は' char * 'を含み、あなたは3つのルールに違反しています。しかし、あなたが 'User'のコードを投稿していないので、あなたの質問は現在答えられません。投稿[MCVE]。 –
あなたは 'cout'を使い、' cin'も使います。変数 'username'はここでは宣言されていません。 – coyotte508