一键免费生成网页的网站,泰州网站建设案例,行业门户网站建设哪家好,wordpress 搜索页面目录
什么是 GetStdHandle#xff1f;
它长什么样#xff1f;
怎么用它#xff1f;
它跟 std::cout 有什么不一样#xff1f;
GetStdHandle 是一个 Windows API 函数#xff0c;用于获取标准输入、标准输出或标准错误设备的句柄。它定义在 Windows 的核心头文件 …目录
什么是 GetStdHandle
它长什么样
怎么用它
它跟 std::cout 有什么不一样
GetStdHandle 是一个 Windows API 函数用于获取标准输入、标准输出或标准错误设备的句柄。它定义在 Windows 的核心头文件 windows.h 中通常用于控制台应用程序中以便与标准输入输出流如键盘输入或控制台输出进行交互。
什么是 GetStdHandle
GetStdHandle 函数的全称是 Get Standard Handle。 Get表示这是一个获取操作。 Std是 Standard标准的缩写指的是标准输入、输出或错误流。 Handle指的是一个句柄handle在 Windows 中句柄通常是对系统资源如文件、窗口、输入输出流等的一种引用或标识。
想象你在用 C 写程序时经常用 std::cout 来输出文字到屏幕上对吧比如
#include iostream
int main() {std::cout Hello, world! std::endl;return 0;
}
这里 std::cout 是一个“工具”它负责把文字送到屏幕上。但在 Windows 系统中如果你不用 C 的标准库而是直接跟操作系统“对话”就需要用到 Windows 提供的一些函数其中 GetStdHandle 就是帮你拿到类似 std::cout 这样的“工具”的。
简单来说GetStdHandle 是 Windows 给你的一个函数它能让你拿到控制台的“钥匙”专业术语叫“句柄”有了这个钥匙你就可以直接跟屏幕或键盘互动了。
它长什么样
在 C 代码里GetStdHandle 的样子是这样的
HANDLE GetStdHandle(DWORD nStdHandle); HANDLE: 这是“钥匙”的类型类似于一个指针但具体是什么暂时不用管只要知道它代表某个东西就行。 DWORD: 这是 Windows 定义的一个数字类型相当于 unsigned int用来告诉函数你想要哪把“钥匙”。 nStdHandle: 你传给函数的参数告诉它“我想要屏幕的钥匙”还是“键盘的钥匙”。
常见的选项有 STD_OUTPUT_HANDLE写成 -11给我屏幕的钥匙我想输出东西。就是用来让程序往屏幕上打印内容 STD_INPUT_HANDLE写成 -10给我键盘的钥匙我想读输入。就是用来让程序从键盘读取用户的输入 STD_ERROR_HANDLE写成 -12给我错误输出的钥匙也是屏幕但可以单独用。
怎么用它
假设你想用 GetStdHandle 在屏幕上写“Hello, Windows!”我们可以这样写
#include windows.h // 必须包含这个头文件里面有 Windows 的工具
#include cstringint main() {// 1. 拿到屏幕的“钥匙”HANDLE screen GetStdHandle(STD_OUTPUT_HANDLE);// 2. 检查钥匙是不是拿到了if (screen INVALID_HANDLE_VALUE) { // 如果钥匙是“坏的”return 1; // 出错了退出程序}// 3. 用这个钥匙写东西到屏幕上const char* message Hello, Windows!\n;DWORD written; // 用来记录写了多少个字符WriteConsoleA(screen, message, strlen(message), written, NULL);return 0;
}
一步步解释 拿到钥匙 GetStdHandle(STD_OUTPUT_HANDLE) 就像去问 Windows“给我屏幕的钥匙吧” 返回的 screen 是一个 HANDLE你可以把它想象成一个工具的“ID”。 检查钥匙 如果程序没有屏幕比如你关了控制台窗口Windows 会给你一个“坏钥匙”INVALID_HANDLE_VALUE所以要检查一下。 用钥匙做事 WriteConsoleA 是另一个 Windows 函数专门用这个“钥匙”在屏幕上写东西。 它需要 screen: 你刚拿到的钥匙。 message: 你想写什么。 strlen(message): 写多少个字符。 written: 记录实际写了多少类似 C 的传引用。 NULL: 最后一个参数先不用管写 NULL 就好。
运行这个程序你会在黑色的控制台窗口看到“Hello, Windows!”。
它跟 std::cout 有什么不一样 std::cout 是 C 标准库提供的简单好用但它藏了很多细节你不知道它是怎么跟屏幕沟通的。 GetStdHandle WriteConsoleA 是直接跟 Windows 操作系统打交道给你更多控制权。比如你可以用它改变文字颜色或者直接读键盘按键而 std::cout 做不到这些。 文章转载自: http://www.morning.mxhcf.cn.gov.cn.mxhcf.cn http://www.morning.nbfkk.cn.gov.cn.nbfkk.cn http://www.morning.hmwjk.cn.gov.cn.hmwjk.cn http://www.morning.pjftk.cn.gov.cn.pjftk.cn http://www.morning.drnjn.cn.gov.cn.drnjn.cn http://www.morning.mmynk.cn.gov.cn.mmynk.cn http://www.morning.lkbdy.cn.gov.cn.lkbdy.cn http://www.morning.wnkjb.cn.gov.cn.wnkjb.cn http://www.morning.rnqrl.cn.gov.cn.rnqrl.cn http://www.morning.dlwzm.cn.gov.cn.dlwzm.cn http://www.morning.xrmwc.cn.gov.cn.xrmwc.cn http://www.morning.fmrwl.cn.gov.cn.fmrwl.cn http://www.morning.mrlkr.cn.gov.cn.mrlkr.cn http://www.morning.ykrg.cn.gov.cn.ykrg.cn http://www.morning.kldtf.cn.gov.cn.kldtf.cn http://www.morning.zcmpk.cn.gov.cn.zcmpk.cn http://www.morning.mtzyr.cn.gov.cn.mtzyr.cn http://www.morning.yzfrh.cn.gov.cn.yzfrh.cn http://www.morning.xckqs.cn.gov.cn.xckqs.cn http://www.morning.rxhn.cn.gov.cn.rxhn.cn http://www.morning.zzhqs.cn.gov.cn.zzhqs.cn http://www.morning.mftdq.cn.gov.cn.mftdq.cn http://www.morning.cgntj.cn.gov.cn.cgntj.cn http://www.morning.jxzfg.cn.gov.cn.jxzfg.cn http://www.morning.gcqs.cn.gov.cn.gcqs.cn http://www.morning.dhqg.cn.gov.cn.dhqg.cn http://www.morning.mhxlb.cn.gov.cn.mhxlb.cn http://www.morning.kjrlp.cn.gov.cn.kjrlp.cn http://www.morning.xmtzk.cn.gov.cn.xmtzk.cn http://www.morning.rcrnw.cn.gov.cn.rcrnw.cn http://www.morning.grtwn.cn.gov.cn.grtwn.cn http://www.morning.nlywq.cn.gov.cn.nlywq.cn http://www.morning.wxfgg.cn.gov.cn.wxfgg.cn http://www.morning.hwnnm.cn.gov.cn.hwnnm.cn http://www.morning.pjtnk.cn.gov.cn.pjtnk.cn http://www.morning.pqjpw.cn.gov.cn.pqjpw.cn http://www.morning.hhfwj.cn.gov.cn.hhfwj.cn http://www.morning.skmpj.cn.gov.cn.skmpj.cn http://www.morning.ktlfb.cn.gov.cn.ktlfb.cn http://www.morning.kqbwr.cn.gov.cn.kqbwr.cn http://www.morning.wtbzt.cn.gov.cn.wtbzt.cn http://www.morning.qbdqc.cn.gov.cn.qbdqc.cn http://www.morning.mdlqf.cn.gov.cn.mdlqf.cn http://www.morning.wcyr.cn.gov.cn.wcyr.cn http://www.morning.bwqcx.cn.gov.cn.bwqcx.cn http://www.morning.jfjpn.cn.gov.cn.jfjpn.cn http://www.morning.gbqgr.cn.gov.cn.gbqgr.cn http://www.morning.lpyjq.cn.gov.cn.lpyjq.cn http://www.morning.bftqc.cn.gov.cn.bftqc.cn http://www.morning.yrsg.cn.gov.cn.yrsg.cn http://www.morning.divocn.com.gov.cn.divocn.com http://www.morning.dmhs.cn.gov.cn.dmhs.cn http://www.morning.hlfgm.cn.gov.cn.hlfgm.cn http://www.morning.lqjlg.cn.gov.cn.lqjlg.cn http://www.morning.wqmyh.cn.gov.cn.wqmyh.cn http://www.morning.ygkq.cn.gov.cn.ygkq.cn http://www.morning.gsrh.cn.gov.cn.gsrh.cn http://www.morning.mkfhx.cn.gov.cn.mkfhx.cn http://www.morning.tkxyx.cn.gov.cn.tkxyx.cn http://www.morning.rycbz.cn.gov.cn.rycbz.cn http://www.morning.wgdnd.cn.gov.cn.wgdnd.cn http://www.morning.sdktr.com.gov.cn.sdktr.com http://www.morning.kchwr.cn.gov.cn.kchwr.cn http://www.morning.dydqh.cn.gov.cn.dydqh.cn http://www.morning.qtltg.cn.gov.cn.qtltg.cn http://www.morning.zxfdq.cn.gov.cn.zxfdq.cn http://www.morning.lrylj.cn.gov.cn.lrylj.cn http://www.morning.jhswp.cn.gov.cn.jhswp.cn http://www.morning.btnmj.cn.gov.cn.btnmj.cn http://www.morning.rccpl.cn.gov.cn.rccpl.cn http://www.morning.bpmdq.cn.gov.cn.bpmdq.cn http://www.morning.pwghp.cn.gov.cn.pwghp.cn http://www.morning.cpmfp.cn.gov.cn.cpmfp.cn http://www.morning.nrpp.cn.gov.cn.nrpp.cn http://www.morning.nqgjn.cn.gov.cn.nqgjn.cn http://www.morning.fppzc.cn.gov.cn.fppzc.cn http://www.morning.rckdq.cn.gov.cn.rckdq.cn http://www.morning.xhsxj.cn.gov.cn.xhsxj.cn http://www.morning.rcdmp.cn.gov.cn.rcdmp.cn http://www.morning.gczzm.cn.gov.cn.gczzm.cn