2013-11-20 30 views
0

我試圖創建一個卡片組數組,其中包含52個卡片結構,其中包含一個整數和一個「pic」,它將是西裝的unicode表示。我試着用unicode值爲每個套裝創建一個不變的字符,但是這不是很有效。是否有我需要得到的unicode庫?這裏是我的代碼:使用unicode初始化卡片組

#ifndef CARD_H 
#define CARD_H 
#include <iostream> 
using namespace std; 

class Card 
{ 

private: 

struct OneCard 
{ 
    int value; 
    char Pic[4]; 
}; 

OneCard Cards[52]; 



public: 
Card(); 

}; 

#endif 



#include "Card.h" 
#include <iostream> 
using namespace std; 

Card::Card() 
{ 
const char spade[4]="\xe2\x99\xa0"; 
const char club[4]="\xe2\x99\xa3"; 
const char heart[4]="\xe2\x99\xa5"; 
const char diamond[4]="\xe2\x99\xa6"; 

for (int i = 0; i<13; i++) 
{ 
    Cards[i].value=i+1; 
    Cards[i].Pic=spade; 
} 

for (int i = 13; i<26; i++) 
{ 
    Cards[i].value=i+1; 
    Cards[i].Pic=club; 
} 
for (int i = 26; i<39; i++) 
{ 
    Cards[i].value=i+1; 
    Cards[i].Pic=heart; 
} 
for (int i = 39; i<52; i++) 
{ 
    Cards[i].value=i+1; 
    Cards[i].Pic=diamond; 
} 


} 

回答

1

你的循環的上限是錯誤的。你不能只將一個數組分配給另一個數組。

添加此#include <algorithm>並更改下面的代碼:

for (int i = 0; i<13; i++) 
{ 
    Cards[i].value=i+1; 
    std::copy(spade, spade+3, Cards[i].Pic); 
} 

for (int i = 13; i<26; i++) 
{ 
    Cards[i].value=i+1; 
    std::copy(club, club+3, Cards[i].Pic); 
} 
for (int i = 26; i<39; i++) 
{ 
    Cards[i].value=i+1; 
    std::copy(heart, heart+3, Cards[i].Pic); 
} 
for (int i = 39; i<52; i++) 
{ 
    Cards[i].value=i+1; 
    std::copy(diamond, diamond+3, Cards[i].Pic); 
} 
+0

謝謝,我去了,修好了。儘管如此,仍然沒有真正解決我的unicode問題,哈哈。 – user2105982

+0

@ user2105982你的unicode問題是什麼?發佈錯誤或你得到的東西 – texasbruce

+0

當我嘗試用套裝初始化數組的一部分的.Pic值時,它表示該表達式必須是可修改的值。我認爲我已經將我的西裝定義爲不變的人物,所以我可以將.Pic值設置爲西裝的名稱。卡[I] = .PIC金剛石; – user2105982