第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么在C和C ++中應避免使用system()函數(shù)?

為什么在C和C ++中應避免使用system()函數(shù)?

C++ C
狐的傳說 2019-11-19 14:37:53
我在論壇上看到很多人都在回避該system()功能,例如system("cls")。我不明白為什么。請告訴我為什么我應該避免使用此功能。而且,由于clrscr()無法使用CodeBlocks,在不使用該system()功能的情況下清除屏幕的其他方法有哪些?
查看完整描述

3 回答

?
一只名叫tom的貓

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()是完全可以的。


查看完整回答
反對 回復 2019-11-19
?
白衣染霜花

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();


查看完整回答
反對 回復 2019-11-19
  • 3 回答
  • 0 關注
  • 1329 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號