我有一个班级:
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;
}
}
}
答案 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;
最后你可以连接每一行。