3 回答
TA贡献1906条经验 获得超3个赞
这里有多个问题:
首先,
system()
作为一个功能是跨平台的,不仅在Windows或Linux上可用。但是,实际调用的程序可能取决于平台。例如,您可以system()
用来创建目录:system("md Temp")
。这仅适用于Windows,因为Linux不知道名为的命令md
。对于Linux,它必须是system("mkdir Temp")
。这种情况持续发生,因此您需要为每个平台使用自定义解决方案。这将始终产生一个子进程,然后该子进程将执行某些操作。通常,这比某些内联代码要慢,例如,必须加载命令或程序,加载其自身的依赖项,然后必须执行等等,这通常需要做很多工作。
如果您只是在一个平台上进行一些快速测试,则使用它system()
是很好的选择,但除非真正需要,否则不要在生产环境中使用它。例如,您可以允许用户设置一个外部程序,然后执行该程序。对于这样的事情system()
是完全可以的。
TA贡献1796条经验 获得超10个赞
关于system()用法有一个答案。而且没有清除控制台窗口的标准C ++方法。对于Windows平台,您可以使用以下代码:
void clear()
{
COORD startPos = { 0, 0 };
HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
CONSOLE_SCREEN_BUFFER_INFO screen;
DWORD written;
GetConsoleScreenBufferInfo(hConsole, &screen);
FillConsoleOutputCharacterA(hConsole, ' ', screen.dwSize.X * screen.dwSize.Y, startPos, &written);
FillConsoleOutputAttribute(hConsole, FOREGROUND_GREEN | FOREGROUND_RED | FOREGROUND_BLUE, screen.dwSize.X * screen.dwSize.Y, startPos, &written);
SetConsoleCursorPosition(hConsole, startPos);
}
对于linux,从未尝试过,但是找到了方法:
#include <curses.h>
erase();
- 3 回答
- 0 关注
- 1225 浏览
添加回答
举报