我试图写一个简单的名称生成器,但我卡住了数组初始化。如何初始化字符的二维数组
为什么我不能像这样初始化二维数组?
const char* alphab[2][26] ={{"ABCDEFGHIJKLMNOPQRSTUVWXYZ"}, {"abcdefghijklmnopqrstuvwxyz"}};
它编译没有错误和警告,但cout << alphab[0][5]
打印什么。
为什么这
class Sample{ private: char alphnum[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; }
抛出 “初始化串为字符的阵列太长” 的错误,并且该
char alphnum[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
class Sample{
//code
};
不?
这里是我的代码
class NameGen {
private:
string str;
char arr[5];
const char* alphab[2][26] = {{"ABCDEFGHIJKLMNOPQRSTUVWXYZ"},
{"abcdefghijklmnopqrstuvwxyz"}
};
public:
string genName()
{
srand(time(0));
for (unsigned int i = 0; i < sizeof(arr); ++i) {
arr[i] = *alphab[(i > 0) ? 1 : 0][rand() % 25];
}
str = arr;
return str;
}
} alph;
int main()
{
cout << alph.genName() << endl;
return 0;
}
没有警告和错误。输出是:分割故障(代码转储)
请记住,文字字符串“ABCDEFGHIJKLMNOPQRSTUVWXYZ”包含* 27 *字符,包括终止的''\ 0'。 –
@JoachimPileborg仍然不能正常工作 – Pocsss
'“ABCDEFGHIJKLMNOPQRSTUVWXYZ”'是'alphab [0] [0]'。 'alphab [0]'的所有其他元素都是空指针,并且对它们进行解引用是错误的。 – molbdnilo