大家好,又见面了,我是全栈君。
单纯使用C++ 进行编程的时候,很多输出的调试信息都是直接在终端输出的,那么有的时候就会对终端输出的信息有一定的要求,那么如何进行定位终端输出的信息到底输出到了哪一行呢?如何清除特定的一行终端内容呢?
对于上面的两个问题,相信也会有很多小伙伴有同样的烦恼,那么就让我们一起来解决这个麻烦吧。
#include <iostream>
#include <Windows.h>
using namespace std;
// 回到坐标位置,坐标需要给定
void setpos(int x, int y)
{
COORD coord;
coord.X = x;
coord.Y = y;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord); //回到给定的坐标位置进行重新输出
}
// 获取当前标准输出流位置
void getpos(int* x, int* y)
{
CONSOLE_SCREEN_BUFFER_INFO b; // 包含控制台屏幕缓冲区的信息
GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &b); // 获取标准输出句柄
*x = b.dwCursorPosition.X;
*y = b.dwCursorPosition.Y;
}
int main()
{
int x, y;
cout << "终端输出第一行内容;" << endl;
cout << "终端输出第二行内容;" << endl;
cout << "终端输出第三行内容;" << endl;
getpos(&x, &y); //记录当前终端输出的位置
setpos(0, 2); // 回到坐标(0,2)位置进行标准输入输出 (第三行第一个字节位置)
cout << " "; // 在原本存在内容的情况下,清空原本行的内容
setpos(0, 2); // 回到坐标(0,2)位置进行标准输入输出
cin >> x;
setpos(x, y); //回到记录的位置
return 0;
}
通过上面的代码demo就能够实现终端清空某一特定行的内容的操作了,快来尝试一下。
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/115098.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...