2015-10-06 100 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