c++中的oop(密码生成)


c++中的面向对象编程

我正在c++中学习oop,不能用oop来解决这个问题oop可能不是最好的解决方案但我想要它。这个问题可能很简单,但我无法解决它显示

**error: cannot convert '<brace-enclosed initializer list>' to 'char' in assignment**
#include <iostream>
#include<ctype.h>
#include<time.h>
#include<stdlib.h>
#include<string>
#include<string.h>
#include<ctime>
using namespace std;
class passwordGenerate{
private:
char letters[56];
int length;
char password[100];
public:
passwordGenerate();
void setLength(int);
void setPassword(char p[]);
void displayPassword();
};
passwordGenerate::passwordGenerate(){
letters[56] = {'a','b','c','d','e',
'f','g','h','i','j',
'k','l','m','n','o',
'p','q','r','s','t',
'u','v','w','x','y','z',
'0','1','2','3','4','5','6','7','8','9',
'.','+','-','*','/',
'=','_',')','(','&',
'%','$','#','@','!',
'~',',','>','?','<'};
//it works when char letters[56] is given but does not work in this way.
}
void passwordGenerate::setLength(int l){
length = l;
}
void passwordGenerate::displayPassword(){
strcpy(password," ");
int random;
srand(time(0));
for(int x =0 ;x<length;x++){
random = rand()%55;
password[x] = letters[random];
}
for(int i=0;i<length;i++){
cout<<password[i];
}
}

int main()
{
passwordGenerate firstPassword;
int length;
cout<<"enter the length for password : ";
cin>>length;
firstPassword.setLength(length);
firstPassword.displayPassword();

return 0;
}

这两种中的[]之间存在根本差异

int x[5] = {1,2,3,4,5};
//    ^-----------------   size of the array
x[2] = 42;
//^---------------------   index of array element

所以当你写的时候

letters[56] = {'a',' .....

然后这是第一次越界访问数组(它有56个元素,letters[56]是第57个(。并且不能将{'a',...指定给单个char(元素类型(。

为了解决这个问题,我建议您使用std::string,并使用类中的初始值设定项:

struct foo {
std::string letters{"abcdefghijklmnop...."};
};

最后但同样重要的是,我建议将该成员命名为alphabet,而不是letters,因为它不仅仅是字母。

相关内容

  • 没有找到相关文章