我的程式在 IDE (Visual Studio 2022) 中以除錯和發布模式運行良好。
當我進行構建并想要.exe從資源管理器啟動時,它會啟動并運行,但是......好吧,看看:
應該是這樣的:

這是它在 VS 之外的樣子:

到目前為止,我已經嘗試將運行時庫設定為多執行緒 (/MT),但這不起作用。
否則,我似乎真的找不到太多東西。似乎獨立.exe的缺少一些依賴項,但我無法弄清楚我需要做什么。據我了解,我在標題中包含的所有內容也應該被編譯為“進入” .exe。
int128_t似乎不起作用。ANSI 顏色代碼也沒有。不過,計時器正在作業。
代碼:
#include <iostream>
#include <chrono>
#include <boost/multiprecision/cpp_int.hpp>
namespace mp = boost::multiprecision;
bool isPrime(mp::int128_t n);
mp::int128_t n{ 0 }, y{ 0 };
int main()
{
std::cin >> y;
std::cin >> n;
std::cout << "\n";
for (y; y <= n; y )
{
int lengthy = to_string(y).length();
const auto start = std::chrono::steady_clock::now();
if (isPrime(y) == true)
std::cout << "\033[1;7;32m" << std::setw(lengthy) << std::left << y << "\033[0m ";
else
{
std::cout << std::setw(lengthy) << std::left << y << " ";
}
const auto end = std::chrono::steady_clock::now();
std::chrono::duration<double> elapsed = end - start;
if (elapsed.count() >= 0.1)
std::cout << "\033[1;7;36m" << std::setw(10) << std::left << elapsed.count() << "\033[0m ";
else
{
std::cout << "\033[1;36m" << std::setw(10) << std::left << elapsed.count() << "\033[0m ";
}
}
std::cout << "\n";
std::cin >> y;
}
bool isPrime(mp::int128_t n)
{
if (n == 2 || n == 3)
return true;
if (n <= 1 or n % 2 == 0 or n % 3 == 0)
return false;
for (uint64_t i = 5; i * i <= n; i = 6)
{
if (n % i == 0 or n % (i 2) == 0)
return false;
}
return true;
}
uj5u.com熱心網友回復:
請參閱https://en.wikipedia.org/wiki/ANSI_escape_code,特別是:
2016 年,微軟發布了 Windows 10 版本 1511 更新,在 Windows NT 首次亮相二十多年后,該更新出人意料地實作了對 ANSI 轉義序列的支持。 [13] 這是與適用于 Linux 的 Windows 子系統一起完成的,允許基于終端的類 Unix 軟體使用 Windows 控制臺中的序列。不幸的是,這默認為關閉,但 Windows PowerShell 5.1 啟用了它。PowerShell 6 可以使用 `e.[14] 將必要的 ESC 字符嵌入到字串中 2019 年推出的 Windows 終端默認支持序列,微軟打算用 Windows 終端替換 Windows 控制臺。 [15]
顏色代碼在 Visual Studio Code(終端)中作業。
附加資訊:
https://devblogs.microsoft.com/commandline/new-experimental-console-features/
uj5u.com熱心網友回復:
我已經能夠使用以下代碼在默認 Windows 終端中啟用顏色代碼:
#ifdef _WIN32
#include <Windows.h>
void enableColors()
{
DWORD consoleMode;
HANDLE outputHandle = GetStdHandle(STD_OUTPUT_HANDLE);
if (GetConsoleMode(outputHandle, &consoleMode))
{
SetConsoleMode(outputHandle, consoleMode | ENABLE_VIRTUAL_TERMINAL_PROCESSING);
}
}
#endif
在main函式開始時呼叫一次。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/417720.html
標籤:
上一篇:回傳沒有型別名稱的聚合初始化
下一篇:如何在3D平面中獲得隨機點
