2016-08-10 43 views
1

我正在C++中實現一個微型QR代碼生成器,我想打印最終矩陣作爲一組黑白方塊生成,看起來像一個真正的QR碼。我的矩陣由整數值10(在我的代碼中有一個原因,而不是使用布爾值),我想打印一個黑色方塊的值爲1或白色方塊的值爲0打印矩陣黑色和白色方塊,類似於QR碼

我當前的代碼(見下文或測試here)使用Unicode字符\u2b1c\u2b1b以實現類似於我想要的結果,但它是不夠的廣場由一個QR碼掃描儀進行掃描。

代碼

#include <iostream> 
using namespace std; 
int i,j; 
int printPixels(int Board[11][11]){ 
    for (i=0;i<11;i++){ 
     for (j=0;j<11;j++) cout << ((Board[i][j] == 0) ? "\u2b1c" : "\u2b1b"); 
     cout << endl; 
    } 
    return 0; 
} 
int main() { 
    int a[11][11]={ 
     {1,1,1,1,1,1,1,0,1,0,1},{1,0,0,0,0,0,1,0,1,0,1}, 
     {1,0,1,1,1,0,1,0,1,1,0},{1,0,1,1,1,0,1,0,0,0,0}, 
     {1,0,1,1,1,0,1,0,1,1,1},{1,0,0,0,0,0,1,0,0,0,1}, 
     {1,1,1,1,1,1,1,0,1,1,1},{0,0,0,0,0,0,0,0,0,1,1}, 
     {1,1,0,0,1,1,1,0,0,1,0},{0,0,1,0,1,1,0,0,0,1,0}, 
     {1,1,1,1,1,0,0,1,1,1,1} 
    }; 
    printPixels(a); 
} 

限制

  • 我只能用ASCII或Unicode字符做到這一點,沒有任何圖紙庫或包(這個原因是複雜的,但這是我的規格)。
  • 我需要的實現是儘可能平臺無關,並且看起來足夠好,可以用普通的QR碼掃描器進行掃描。
  • 我希望它看起來像Ideone,它有一個白色的背景,而不是大多數終端通常的黑色背景。
+1

您是否嘗試過使用空格和\ u2588(可能加倍),如[這裏](https://ideone.com/v6i7cZ)? –

+0

@Bob__這實際上是一個非常好的解決方案,你可以發佈它作爲答案,所以我可以接受它嗎? –

回答

1

一個可能的選擇是使用空格字符爲0和Unicode字符「滿塊」(U + 2588)█代表1

(Board[i][j] == 0) ? " " : "\u2588\u2588"; 

你可以看到它的模樣here在哪裏還使用了一對每個字符來考慮字體寬高比。