3 回答

TA貢獻1906條經(jīng)驗 獲得超3個贊
這里有多個問題:
首先,
system()
作為一個功能是跨平臺的,不僅在Windows或Linux上可用。但是,實際調用的程序可能取決于平臺。例如,您可以system()
用來創(chuàng)建目錄:system("md Temp")
。這僅適用于Windows,因為Linux不知道名為的命令md
。對于Linux,它必須是system("mkdir Temp")
。這種情況持續(xù)發(fā)生,因此您需要為每個平臺使用自定義解決方案。這將始終產(chǎn)生一個子進程,然后該子進程將執(zhí)行某些操作。通常,這比某些內(nèi)聯(lián)代碼要慢,例如,必須加載命令或程序,加載其自身的依賴項,然后必須執(zhí)行等等,這通常需要做很多工作。
如果您只是在一個平臺上進行一些快速測試,則使用它system()
是很好的選擇,但除非真正需要,否則不要在生產(chǎn)環(huán)境中使用它。例如,您可以允許用戶設置一個外部程序,然后執(zhí)行該程序。對于這樣的事情system()
是完全可以的。

TA貢獻1796條經(jīng)驗 獲得超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 關注
- 1329 瀏覽
添加回答
舉報