You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何不修改vector元素类型 将输出的整数0转换为.字符显示

解决方案

通用跨平台实现(无额外依赖)

  • 完全不需要修改你原有vector<vector<bool>>的定义与内部元素,仅调整输出逻辑即可实现效果:
#include <iostream>
#include <vector>
using namespace std;

int main() {
    // 你的原有迷宫定义,保持不变
    vector<vector<bool>> maze(3, vector<bool>(12, false)); 

    // 仅修改输出部分
    for (const auto& row : maze) {
        for (bool cell : row) {
            // 0对应false输出.(ASCII 46),1对应true可输出墙壁符号#(ASCII 35)
            cout << (cell ? (char)35 : (char)46);
        }
        cout << '\n';
    }
    return 0;
}
  • 该方案没有修改任何迷宫存储逻辑,也没有引入char类型的存储结构,完全符合你的需求。如果不介意显式使用字符常量,也可以把(char)35换成'#'、(char)46换成'.',运行效果完全一致。

Windows平台专属实现(基于Windows.h API)

你记忆中用Windows.h搭配ASCII码的方案本质是直接向控制台输出缓冲区写入对应ASCII字符,同样不需要修改原有迷宫结构:

#include <vector>
#include <windows.h>

int main() {
    // 原有迷宫定义不变
    vector<vector<bool>> maze(3, vector<bool>(12, false));
    HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
    COORD writePos = {0, 0};
    DWORD writeCount;

    for (int y = 0; y < maze.size(); y++) {
        writePos.Y = y;
        writePos.X = 0;
        for (int x = 0; x < maze[y].size(); x++) {
            char outputChar = maze[y][x] ? 35 : 46;
            WriteConsoleOutputCharacterA(hConsole, &outputChar, 1, writePos, &writeCount);
            writePos.X++;
        }
    }
    return 0;
}

内容的提问来源于stack exchange,提问作者Beam291

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 15:36:02