如何让C++类对象通过cout输出其数组成员
解决你的C++类数组打印问题
嘿,作为从Python转过来的C++新手,踩这种小坑太正常啦!我帮你分析下代码里的问题,然后给出能实现你想要效果的修改方案:
问题1:循环条件完全写反了
你写的for (int i = 0; i++; i < 9)是错误的——C++的for循环三个部分顺序是初始化; 循环条件; 每次循环后执行的语句。你把循环条件和递增语句搞反了,这会导致循环一开始就终止:初始i是0,i++返回的是递增前的值0,条件判断为假,循环体根本没执行,所以自然没输出。
问题2:缺少你想要的格式化输出
就算循环正常跑了,你现在的代码只是把9个0连续打印出来,不会有{}和逗号分隔,不符合你想要的格式。
修改后的完整代码
#include <iostream> using namespace std; class TicTacToeGame { int board[9] = {0, 0, 0, 0, 0, 0, 0, 0, 0}; friend ostream &operator<<(ostream &os, const TicTacToeGame &m); }; ostream &operator<<(ostream &os, const TicTacToeGame &m) { os << "{"; for (int i = 0; i < 9; ++i) { if (i != 0) { os << ", "; } os << m.board[i]; } os << "}"; return os; } int main() { TicTacToeGame game; cout << game << endl; // 加endl可以让输出换行,更清晰 return 0; }
改动说明
- 修正了for循环的顺序,现在
i < 9是循环条件,++i(和i++在这里效果一样,前置递增效率略高一点)是每次循环后执行的递增操作 - 在输出开头打印
{,结尾打印} - 循环里判断当前元素不是第一个时,先输出
,作为分隔符,避免开头多一个逗号 - 主函数里加了
endl,让输出后自动换行,方便查看
运行这段代码,你就能看到想要的{0, 0, 0, 0, 0, 0, 0, 0, 0}输出啦!
内容的提问来源于stack exchange,提问作者Pro Q
相关产品推荐
相关产品推荐

