如何在C++中从字符串输入创建3x3二维vector并打印游戏板
从输入字符串生成3x3游戏板并打印的解决方案
字符串转二维vector的核心逻辑
3x3游戏板需要恰好9个字符的输入字符串,转换时按行优先顺序填充:
- 先创建一个3行3列的
vector<vector<char>>容器 - 遍历字符串的每个字符,第i个字符(从0开始计数)对应的行号是
i / 3(整数除法自动向下取整),列号是i % 3,直接把字符放到对应位置即可
修正打印循环的错误
之前的打印循环条件出错,大概率是循环边界设置不当。正确的打印方式是:
- 外层循环遍历游戏板的每一行
- 内层循环遍历当前行的每个元素,打印后加空格分隔
- 每行元素打印完后换行,保证游戏板的3x3格式
完整可运行代码
#include <iostream> #include <vector> #include <string> using namespace std; int main() { string input; cout << "请输入9个字符的游戏板字符串:"; cin >> input; // 输入合法性检查,避免越界问题 if (input.length() != 9) { cout << "错误:必须输入恰好9个字符!" << endl; return 1; } // 初始化3x3二维vector并填充内容 vector<vector<char>> board(3, vector<char>(3)); for (int idx = 0; idx < 9; ++idx) { int row = idx / 3; int col = idx % 3; board[row][col] = input[idx]; } // 打印游戏板 cout << "\n生成的3x3游戏板:\n"; for (int row = 0; row < 3; ++row) { for (int col = 0; col < 3; ++col) { cout << board[row][col] << " "; } cout << endl; } return 0; }
关键细节说明
- 输入校验:必须检查字符串长度是否为9,否则填充时会出现索引越界的运行时错误
- 填充逻辑:
i/3和i%3的组合是行优先填充固定列数二维数组的通用技巧,逻辑简洁且不易出错 - 打印格式:每行结束后换行、元素间加空格,能让游戏板的3x3结构更直观清晰
内容的提问来源于stack exchange,提问作者c_plusplus_beginner
相关产品推荐
相关产品推荐

