2013-10-29 32 views
0

我有一個類:如何打印兩個彼此相鄰的「碎片」?

​​

它描述puzzlepiece,例如像這樣
A /!
+␣!
C!

兩邊各有一個數字(上,右...)

我做了功能打印這一塊,但我需要一種方法來打印兩件下一對方 像這樣
/- !␣HDA
[R IEB
-/JFC

有沒有人有一個想法如何解決這個問題?

void Piece::print(){ 

    for(string::size_type i = 0; i < piece_.size(); ++i){ 
     cout << piece_.at(i); 
     if(i == 2 or i == 5 or i == 8){ 
      cout << endl; 
     } 
    } 
} 
+2

如果您使用* single *件打印輸出中的相同樣本,組合的多件樣品會更有意義。 – WhozCraig

+0

這些作品應該如何吻合?你的'A /!','!R!'等等的例子對我來說看起來很亂,而且很難看到你正在做什麼。 – ssell

+0

另外,你準備打印什麼?在你的'print'方法中,你正在打印一些你的類中不存在的(假定)字符串'piece_'的單個字符。我認爲這應該是'piece'或'piece_name_'。如果是這樣,這些應該是什麼格式? – ssell

回答

0

單獨的擔憂,轉換爲字符串(或字符串)應與打印分開。然後,你可以轉換成多個字符串然後打印它們,你喜歡什麼。

0

我不明白像「A /!」這樣的片段信息,代表,但你可以打印兩件與非成員函數

void printTwoPieces(Piece a, Piece b) { 
    a.print(); 
    b.print(); 
    cout << endl; 
} 

您還需要與return;更換if語句在片::打印(),除非你在特定只需要輸出一個換行符案例。那麼這個問題還沒有被詳細描述。

+0

不打印第一個以下的其他作品嗎?我需要在彼此旁邊打印它們。一個/!是隻是在那裏使各個部分視覺上不同於彼此的字符 – user2933157

+0

如果您從Piece :: print()中刪除cout << endl語句(以及if語句的其餘部分),它不會將其打印在另一個之下。 。 –

0

首先,你不能做我認爲你想要做的事情,Piece::print直接寫到std::cout。首先編寫像std::ostream& operator<<(std::ostream&, Piece const&)這樣的流插入操作符。

然後,您可以格式化兩件,你控制字符串:

void format_pieces(Piece const &p1, Piece const &p2) { 
    std::stringstream s1, s2; 
    s1 << p1; 
    s2 << p2; 

最後你可以連接每行。