“cin.get”停止了另一个输入函数,如“cin”.. c ++

时间:2017-11-23 00:58:17

标签: c++

我想从6个用户请求用户名和密码, 然后将此用户名和密码保存到桌面上的文本文件中。 我构建了一个结构,其中包含一个用于存储密码的变量和一个长度为25的char数组。

struct users {
    int password;
    char username[25];
}

当我想在main()函数中请求用户名时,我使用cin.get()函数。

cin.get(username,25);

程序在存储密码时在第二个cin功能之后停止。那是为什么?

#include <iostream>
#include <fstream> 

struct users {
    char username[25];
    int password;
} user[6]; 

using namespace std;
int main() {  
    cout << "Sign up x6" << endl;
    for(int i=0;i<6;i++){
        cout << "Username:";
        cin.get(user[i].username,20);
        cout << "Password:";
        cin >> user[i].password;
    }
    std::ofstream file;
    file.open("C:/Users/Programmer/Desktop/sa.txt",ios::app);
    for(int i=0;i<6;i++){
        file << "first user\n" << user[i].username << endl << user[i].password << endl;
        cout << "\n \n \n";
    }
}

2 个答案:

答案 0 :(得分:-1)

我找到了使用&#34;获取&#34; 功能的解决方案..在 stdio.h 库内部:
函数&#34;获取&#34; 将请求值的用户然后存储变量的值。 (用户名)
char username [25];
得到(用户名[25]);

但是此功能&#34;得到&#34; 只获得&#34; char&#34; 类型变量的值我将&#34;密码&#34; 变量类型更改为 char char密码[25];
得到(密码[25]);

    #include<iostream>
    #include <fstream> 
    #include<stdio.h>
struct users
{
char username[25];
char password[25];
} user[6];
using namespace std;
int main()
{
cout << "Sign up x6" << endl;
for (int i = 0; i < 6; i++)
{
    cout << "username:";
    gets(user[i].username);
    cout << "Password:";
    gets(user[i].password);
}
std::ofstream file;
file.open("C:/Users/Programmer/Desktop/sa.txt", ios::app);
for (int i = 0; i < 6; i++)
{
    file <<"("<<i<<") user\n" << user[i].username << endl <<  user[i].password<< endl;          
    cout << "\n \n \n";
}
}

答案 1 :(得分:-2)

使用std :: cin.getline(user [i] .username,20)代替。