2015-10-06 103 views
0

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

,你应该只使用['标准:: string'(HTTP的['的std :: VECTOR'(http://en.cppreference.com/w/cpp/container/vector): //en.cppreference.com/w/cpp/string/basic_string) – NathanOliver

回答

0
char validuser[20][20]; 
.... 
validuser[c][0] = user_uname; 

validuser [] []是一个字符,所以你不能分配。在你的代码中,你可以使用:

strncpy(&(validuser[c][0]), user_uname, 20); 

但为什么你不使用std :: vector或std :: array?在大多数情况下,std :: string为您提供了足够好的功能。

+0

如果我这样说:cout << validuser [c] [0];它只显示第一个字母,但我想存储第一个整个字符串到validuser [c] [0]。如果我把字符串validuser [20] [20],显示错误 – raghu

+0

如何将字符串“普通用户”分配给validuser [c ] [2]。 void DataManagement :: addUser() { char add_uname [20],add_pwd [20]; cout <<“\ n输入用户详情”; cout <<“\ n输入用户名:”; cin >> add_uname; cout <<“\ n输入密码:”; cin >> add_pwd; strncpy(&(validuser [c] [0]),add_uname,20); strncpy(&(validuser [c] [1]),add_pwd,20); // validuser [c] [2] =“normaluser”; C++; – raghu

+0

我想你会混淆数组的方向。你真的想要validuser [c] validuser [c + 1] validuser [c + 2] –

1

validuser是数组或字符数组。您只能在每个位置存储单个char,或者您可以将它用作“字符串”(char数组)的数组。如果你一定要使用C风格的字符串,你应该有第三个维度来做你想要的,比如char validuser[20][3][20]

但是既然您使用C++,为什么不使用std::vector<std::string>呢?并将用户名和密码存储在结构中,而不是连续的字符串。使用C++字符串和向量将允许您使用任何长度的字符串或任意数量的用户,而无需事先知道数字或自己处理内存分配。

0

您必须在此使用字符串。 Char只接受单个字符,这里是修改后的代码。希望这有助于:)

第一维你只需要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; 
} 
+0

它显示了未定义的符号'string'.Please rectify me – raghu

+0

你复制了#include 库。并复制“using namespace std;”你可能已经忘记了这是你得到错误的原因。尝试复制我发布其工作正常的整个代码:) –

+0

你会为我做项目,我会给你奖励。今天我必须完成。 – raghu