我正在尋找一種列印上標的方法3,我搜索了很多,我找到了一種列印上標的方法2:
const char expo_square = 253;
void main () {
std::cout << expo_square;
return;
}
經過一番谷歌搜索后,我遇到了Alt Keycodefor superscript 3,即:
Alt 0179
這樣做的問題是在編譯C 源檔案時:
const char expo_cube = 0179;
void main () {
std::cout << expo_cube;
return;
}
我收到一個錯誤:(
3d.cpp(18): error C2041: illegal digit '9' for base '8'
不要介意檔案名)
所以我嘗試了下一個合乎邏輯的事情,因為Alt Keycodefor 上標2是253, 我試過Alt Keycode 254了,但我最終得到的是:
■
所以我想問:
How can I print superscript 3 in C ?
uj5u.com熱心網友回復:
Unicode 上標 3 或3在\u00b3utf-16 和\xc2\xb3UTF-8 中。
因此,這適用于cout,假設您的控制臺是 UTF8。
#include <iostream>
int main()
{
std::cout << "\xc2\xb3" << std::endl;
return 0;
}
要將控制臺設定為 UTF-8 模式,可以通過多種方式進行,如果需要,每種方式都取決于作業系統。在 Windows 上,您可以chcp 65001在呼叫代碼之前從命令提示符運行:

如果您幾乎看不到 3 列印在上面,讓我們放大一點:

或者,您可以通過 Windows API SetConsoleOutputCP在代碼中執行此操作
SetConsoleOutputCP(65001);
因此,這也適用于 Windows 程式,而無需在運行程式之前進行任何環境更改。
#include <windows.h>
#include <iostream>
int main()
{
SetConsoleOutputCP(65001);
std::cout << "\xc2\xb3" << std::endl;
return 0;
}
uj5u.com熱心網友回復:
如果在運算式前面加上 a 0,編譯器會認為這個值以八進制基數表示。八進制基數中的值必須在 的范圍內[0,7]。9運算式中的值0179超出八進制基數范圍。
嘗試以下解決方案列印上標 3:
std::cout << "x\u00b3" << std::endl;
結果:x 3
參考
- 如何在 C 的螢屏上列印下標/上標?
uj5u.com熱心網友回復:
擴展問答范圍,此函式可用于獲取任何冪的上標(可能對某人有用):
std::string supow(int pow)
{
std::string r{}, t{};
if (pow<0) { r="\u207b"; pow*=-1; } else r.clear();
t=itoa(pow); //stringize the pow for easier access to digits
for (auto c:t)
{
switch(c-48)
{
case 0: r ="\u2070"; break;
case 1: r ="\u00b9"; break;
case 2: r ="\u00b2"; break;
case 3: r ="\u00b3"; break;
case 4: r ="\u2074"; break;
case 5: r ="\u2075"; break;
case 6: r ="\u2076"; break;
case 7: r ="\u2077"; break;
case 8: r ="\u2078"; break;
case 9: r ="\u2079"; break;
}
}
return r;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/410781.html
標籤:
上一篇:<cstring>標頭和<string>標頭是否相同?
下一篇:OutputIterator與std::back_inserter和std::ostream_iterator有什么關系?
