Windows控制台函数:控制台窗口设置函数system(“mode con ...“)

目录

什么是 system("mode con ...")?

它长什么样?

怎么用它?

再试一个例子

它是怎么工作的?

system("mode con ...") 的其他用法

优缺点

注意事项

什么是 system("mode con ...")?

system("mode con ...") 是通过 system 函数调用 Windows 命令行中的 mode 命令,用来改变控制台窗口的属性。mode 是一个多功能命令,而 mode con 专门用来设置控制台(con 是“console”的缩写)的样子,比如窗口大小、行数、列数等。

简单来说,它就像一个“控制台装修工”,可以调整窗口的宽度、高度,甚至其他设置。

它长什么样?

跟 system("cls") 一样,system("mode con ...") 还是用 system 函数:

int system(const char* command);

这里的 command 是 "mode con" 加上一些具体的设置参数。比如:

  • system("mode con cols=80 lines=25"):把控制台设为 80 列宽、25 行高。

参数说明:

  • cols=数字: columns(列) 指的是控制台窗口的宽度,即每行可以显示多少个字符。

  • lines=数字: lines(行) 指的是控制台窗口的高度,即可以显示多少行文本。

注意: 

在 Windows 的 mode 命令中,用于设置控制台窗口大小的正确语法是:

mode con: cols=<宽度> lines=<高度>
  • con: 后必须有冒号,表示控制台。

  • cols 和 lines 之间不能有空格,正确写法是 cols=<数值> 和 lines=<数值>,而不是 cols = <数值>。

  • 如果语法中有多余的空格(如 cols = 50),Windows 会解析失败,并提示参数无效。

怎么用它?

假设你想把控制台窗口改成 100 列宽、40 行高,可以这样写:

#include <iostream>
#include <cstdlib> // 包含 system 的头文件

int main() {
    system("mode con cols=100 lines=40"); // 设置窗口大小

    std::cout << "现在窗口是 100 列宽,40 行高!" << std::endl;
    return 0;
}

运行这个程序:

  1. 控制台窗口会变成 100 列 × 40 行。

  2. 然后显示一条消息。

再试一个例子

如果你想让窗口变小,比如 50 列 × 20 行:

#include <iostream>
#include <cstdlib>

int main() {
    std::cout << "原来的窗口可能很大..." << std::endl;
    std::cout << "按 Enter 改成 50x20..." << std::endl;
    std::cin.get();

    system("mode con cols=50 lines=20");

    std::cout << "现在窗口变小了!" << std::endl;
    return 0;
}

运行后:

  1. 先显示两条消息。

  2. 按 Enter,窗口缩成 50 列 × 20 行。

  3. 显示新消息。

它是怎么工作的?

  • system("mode con ...") 调用 Windows 的 cmd.exe。

  • mode con cols=80 lines=25 是告诉命令行:“把控制台改成 80 列、25 行。”

  • 系统收到命令后,调整当前控制台窗口的缓冲区和显示大小。

这跟 system("cls") 类似,都是通过命令行间接操作控制台。

system("mode con ...") 的其他用法

mode con 不止能改大小,还有一些高级选项(不过不常用):

  • system("mode con cp=65001"): 设置代码页为 UTF-8(支持中文等字符)。

  • system("mode con status"): 显示当前控制台的状态(比如大小、输入模式等)。

例子:

#include <cstdlib>

int main() {
    system("mode con cp=65001"); // 支持中文
    system("echo 你好,世界!");
    return 0;
}

优缺点

优点:

  • 简单:一行代码就能改窗口大小。

  • 直观:参数很好理解(cols 是列,lines 是行)。

缺点:

  • 依赖系统:只在 Windows 上有效,Linux 用不了。

  • 不够精确:没法像 API 那样精细控制(比如只改缓冲区不改窗口)。

  • 效率低:调用外部命令,比 API 慢。

注意事项

  1. 大小限制:

    • 控制台有最大值(通常是 32766 列 × 32766 行),但实际能设多大取决于你的屏幕分辨率和字体大小。

    • 如果设得太小(比如 cols=1),可能看不到内容。

  2. 缓冲区 vs 窗口:

    • mode con 同时改缓冲区和窗口大小。如果缓冲区比窗口小,可能会出错。

  3. 中文问题:

    • 默认情况下,控制台可能不支持中文,需先用 mode con cp=65001 设置 UTF-8。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值