我想将user_uname和user_pwd的值存储到validuser [c] [0]和validuser [c] [1]。还要将字符串“normaluser”存储到validuser [c] [2]。 但它显示错误“无法将char *转换为char”。这是我的代码:
char validuser[20][20];
int c;
char user_uname[20],user_pwd[20];
cout<<"\n Enter User Detail";
cout<<"\n enter Username:";
cin>>user_uname;
cout<<"\n Enter Password:";
cin>>user_pwd;
validuser[c][0] = user_uname;
validuser[c][1] = user_pwd;
validuser[c][2] = "normaluser";
c++;
答案 0 :(得分:1)
您的validuser
是一个数组或字符数组。您只能在每个位置存储单个char
,或者您可以将其用作“字符串”数组(字符数组)。如果您肯定想要使用C样式字符串,那么您应该有第三个维度来执行您正在尝试的内容,例如char validuser[20][3][20]
。
但是既然你使用的是C ++,为什么不使用std::vector<std::string>
呢?并将用户名和密码存储在结构中,而不是连续的字符串。使用C ++字符串和向量将允许您使用任意长度的字符串或任意数量的用户,而无需事先知道数字或自己处理内存分配。
答案 1 :(得分:0)
char validuser[20][20];
....
validuser[c][0] = user_uname;
validuser [] []是一个字符,因此您无法分配。在您的代码中,您可以使用:
strncpy( &(validuser[c][0]), user_uname, 20 );
但是为什么不使用std :: vector或std :: array?在大多数情况下,std :: string为您提供了足够好的功能。
答案 2 :(得分:0)
你必须在此使用字符串。 Char只接受单个字符,这里是修改后的代码。希望这会有所帮助:)
First Dimension,由于用户名,密码和类型,您只需要3个数组。对于第二维度,您可以添加任意数量,我将它设为3,以便它可以接受3个用户。
#include<iostream>
#include<string>
using namespace std;
void main()
{
int pause;
string validuser[3][3];
int c = 0;
do
{
string user_uname, user_pwd;
cout << "\nEnter User Detail";
cout << "\nenter Username:";
cin >> user_uname;
cout << "Enter Password:";
cin >> user_pwd;
cout << endl;
validuser[c][0] = user_uname;
validuser[c][1] = user_pwd;
validuser[c][2] = "normal_user";
c++;
} while (c < 3);
c = 0;
do{
cout << validuser[c][0] << " " << validuser[c][1] << " " << validuser[c][2] << endl;
c++;
} while (c < 3);
cin >> pause;
}