如何将字符变量存储到二维字符变量中

时间:2015-10-06 11:54:01

标签: c++ string char

我想将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++;

3 个答案:

答案 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;
}