我試圖寫一個簡單的名稱生成器,但我卡住了數組初始化。如何初始化字符的二維數組
爲什麼我不能像這樣初始化二維數組?
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