0

我有一堂课:

class Piece{

    public: 
        void print();

    private:
        string piece_name_;

        int top_;
        int right_;
        int lower_;
        int left_;

        string piece_;

};

它描述了拼图,例如像这样
的 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;
        }
    }
}
4

3 回答 3

0

我不明白像“A/!”这样的片断信息是什么。表示,但您可以使用非成员函数打印两件

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

您还需要将 Piece::print() 中的 if 语句替换为return;,除非您仅在特定情况下需要输出换行符。那么问题的描述还不够详细。

于 2013-10-29T17:38:47.333 回答
0

单独的关注点,转换为字符串(或字符串)应该与打印分开。然后,您可以将多个部分转换为字符串,然后以您喜欢的方式打印它们。

于 2013-10-29T17:42:08.160 回答
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;

最后你可以连接每一行。

于 2013-10-29T17:47:37.873 回答