如何打印两个“件”彼此相邻?

时间:2013-10-29 17:20:58

标签: c++ class

我有一个班级:

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;
        }
    }
}

3 个答案:

答案 0 :(得分:0)

我不明白这些信息如何&#34; A /!&#34;表示,但您可以使用非成员函数打印两个部分

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

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

答案 1 :(得分:0)

单独关注,转换为字符串(或字符串)应与打印分开。然后你可以转换为字符串,然后按照你喜欢的方式打印它们。

答案 2 :(得分: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;

最后你可以连接每一行。