C++中SetConsoleCursorPosition()移動(dòng)光標(biāo)函數(shù)的用法大全
SetConsoleCursorPosition()來自于文件"windows.h",使用時(shí)記得引用此頭文件。
首先說一下,這個(gè)函數(shù)的功能即是字面意思,即移動(dòng)命令行中光標(biāo)的位置。這里要注意的是,每次調(diào)用這個(gè)函數(shù)都是默認(rèn)從左上角開始偏移,而與當(dāng)前光標(biāo)停留的位置無關(guān)。
然后我們剖析下這個(gè)函數(shù),我們查看定義發(fā)現(xiàn),調(diào)用這個(gè)函數(shù)需要傳入兩個(gè)參數(shù),都是自定義類型,分別為 HANDLE 和 COORD。
SetConsoleCursorPosition( _In_ HANDLE hConsoleOutput, _In_ COORD dwCursorPosition );
我們先來看看HANDLE,再次查看定義發(fā)現(xiàn) HANDLE即是void*的重定義。
typedef void *HANDLE;
但是在將其傳入前,我們需要使這個(gè)指針變成一個(gè)windows輸出的句柄
HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);//獲取標(biāo)準(zhǔn)輸出句柄
然后我們來看一下COORD
typedef struct _COORD { SHORT X; SHORT Y; } COORD, *PCOORD;
在查看發(fā)現(xiàn)
typedef short SHORT;
SHORT就是short基礎(chǔ)數(shù)據(jù)類型。
由此我們可以發(fā)現(xiàn),COORD是一個(gè)類的重定義,里面包含是兩個(gè)short型,當(dāng)然這里傳入的XY就是之后光標(biāo)在命令行里偏移的單位。
比如X=1時(shí),光標(biāo)向右移動(dòng)一個(gè)單位,比如Y=1時(shí),光標(biāo)向下移動(dòng)一個(gè)單位。
這里我們上手代碼實(shí)驗(yàn)一下吧
#include <stdio.h> #include <windows.h> void SetCCPos(int x, int y) { HANDLE hOut; hOut = GetStdHandle(STD_OUTPUT_HANDLE);//獲取標(biāo)注輸出句柄 COORD pos; pos.X = x;pos.Y = y; SetConsoleCursorPosition(hOut, pos);//偏移光標(biāo)位置 } int main(){ SetCCPos(1, 0); printf("R"); SetCCPos(0, 1); printf("I"); }
嗯效果正確,,第一次的偏移絲毫沒有影響到第二次偏移
這個(gè)時(shí)候就有人問了,如果我令X=-1,是不是光標(biāo)就到命令行左邊一個(gè)單位隱藏了,然后這時(shí)我們printf("RR");就會(huì)輸出一個(gè)R,另一個(gè)R被隱藏了
我們趕緊來試一下
int main(){ SetCCPos(-1, 0); printf("RR"); }
從這里我們可以得出XY是負(fù)數(shù)的話是不會(huì)使光標(biāo)偏移到“屏幕外”的,使用負(fù)值相當(dāng)于傳入0,光標(biāo)位置不變。
到此這篇關(guān)于C++中SetConsoleCursorPosition()移動(dòng)光標(biāo)函數(shù)的用法大全的文章就介紹到這了,更多相關(guān)C++ SetConsoleCursorPosition()移動(dòng)光標(biāo)函數(shù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- 詳解C++中對(duì)構(gòu)造函數(shù)和賦值運(yùn)算符的復(fù)制和移動(dòng)操作
- C++中的移動(dòng)構(gòu)造函數(shù)及move語句示例詳解
- C++11中std::move、std::forward、左右值引用、移動(dòng)構(gòu)造函數(shù)的測試問題
- C++11 移動(dòng)構(gòu)造函數(shù)的使用
- C++超詳細(xì)講解拷貝構(gòu)造函數(shù)
- C++超詳細(xì)講解構(gòu)造函數(shù)
- 聊聊C++中右值引用和移動(dòng)構(gòu)造函數(shù)的使用
- C++賦值函數(shù)+移動(dòng)賦值函數(shù)+移動(dòng)構(gòu)造函數(shù)詳解
相關(guān)文章
vector list map 遍歷刪除制定元素 防止迭代器失效的實(shí)例
下面小編就為大家?guī)硪黄獀ector list map 遍歷刪除制定元素 防止迭代器失效的實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-12-12深入解析C++中的函數(shù)模板和函數(shù)的默認(rèn)參數(shù)
這篇文章主要介紹了深入解析C++中的函數(shù)模板和函數(shù)的默認(rèn)參數(shù),是C++入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下2015-09-09C++ Eigen庫實(shí)現(xiàn)最小二乘擬合的示例代碼
Eigen 是一個(gè)線性算術(shù)的 C++ 模板庫,功能強(qiáng)大、快速、優(yōu)雅以及支持多平臺(tái),本文主要為大家介紹了C++利用Eigen庫實(shí)現(xiàn)最小二乘擬合的示例代碼,希望對(duì)大家有所幫助2023-07-07