2010-10-27 11 views

Odpowiedz

16

Jak powiedział Zan, zależy to od tego, jakie kodowanie znaków obsługuje standardowe wyjście. Jeśli obsługuje kodowanie Unicode, możesz użyć kodowania ² (U+00B2). Jeśli obsługuje to samo kodowanie Unicode dla plików źródłowych i standardowego wyjścia, możesz po prostu osadzić je w pliku. Na przykład, mój GNU/Linux używa UTF-8 dla obu, tak to działa prawidłowo:

#include <iostream> 

int main() 
{ 
    std::cout << "cm²" << std::endl; 
} 
+2

Nie działa tylko dla Unicode. Na ISO-8859-1, ² to 'char (0xB2)'. Ponieważ mój system Windows używa tego do plików źródłowych i wyjścia konsoli, ja też mogę je osadzić bezpośrednio w moich plikach źródłowych. – MSalters

5

To nie jest coś, co C++ może zrobić samodzielnie.

Należy użyć określonej funkcji systemu konsoli.

Nie znam żadnych konsol ani terminali, które implementują super-skrypt. Może się mylę.

+0

To zależy od dostępnych znaków i używanego kodowania. Z [UTF-8 wszędzie] (http://utf8everywhere.org/) jest to możliwe. –

2

Tak, zgadzam się z Zanem.

Podstawowe C++ nie ma wbudowanej funkcjonalności do drukowania indeksów górnych i dolnych. Musisz użyć dowolnej dodatkowej biblioteki UI.

+4

Technicznie rzecz biorąc, C++ nie ma funkcji wypisywania DOWOLNEJ konkretnej postaci. Nawet w przypadku podstawowych znaków alfanumerycznych, takich jak "a" lub "2", C++ nie ma funkcji pozwalającej na ich wyprowadzanie. Wszystko, co jest w stanie zrobić, to konwertowanie tych literałów na kody znaków, które są następnie interpretowane przez strumień wyjściowy, do którego są wysyłane. Zwykle powoduje to wyświetlenie "a" lub "2" na ekranie, ale z uwagi na dziwną konsolę i/lub system czcionek można uzyskać wszystko. –

0

dla super-skryptów lub sub skryptów trzeba użyć wartości ASCII litery lub cyfry.

Np .: Super skrypty 2 dla x2 musimy uzyskać ascii value of super script of 2 (wyszukiwanie w Google), czyli - 253. Aby wpisać znak ASCII, musisz w tym miejscu wpisać alt + 253, możesz wpisać dowolną liczbę, ale w tym przypadku 253.

Np: - cout<<"x²";

Więc teraz powinno wyświetlać na czarnym ekranie.

3

Próbowałem wykonać to zadanie w celu wykonania równania kwadratowego. Zapisywanie ax² wewnątrz cout << przez przytrzymanie klawisza ALT podczas wpisywania 253 wyświetlanego poprawnie tylko w kodzie źródłowym, ale NIE w konsoli. Podczas działania programu wyglądał on jak jasno kolorowy prostokąt zamiast indeksu górnego 2.

Prostym rozwiązaniem tego problemu wydaje się być rzutowanie liczby całkowitej 253 jako znaku, tak ... (char)253.

Ponieważ nasz profesor zniechęca nas do używania "magicznych liczb", zadeklarowałem go jako zmienną stałą ... const int superScriptTwo = 253; //ascii value of super script two.

Następnie, gdzie chciałem odnośnikiem 2 pojawił się w konsoli, rzucam zmienną jako char jak to ... cout << "f(x) = ax" << (char)superScriptTwo << " + bx + c"; i wyświetlać go doskonale.

Być może jest jeszcze łatwiej po prostu utworzyć go jako char i nie martwić się jego rzutowaniem. Kod ten będzie również drukować super skrypt 2 do konsoli, gdy kompilowany i uruchomić w VS2013 na moim Lenovo z systemem Windows 7 ...

char ssTwo = 253; 
cout << ssTwo << endl; 

Mam nadzieję, że ktoś znajdzie to użyteczne. To jest mój pierwszy post, więc przepraszam z góry, jeśli przypadkowo naruszę jakiekolwiek protokoły Stack Overflow odpowiadające na pytanie opublikowane 5+ lat temu.Każde takie zdarzenie nie było zamierzone.

-1

Dlaczego nie spróbujesz ASCII?
Zadeklaruj znak i nadaj mu wartość ASCII 253, a następnie wydrukuj znak.
Twój kod powinien iść w ten sposób;

char ch = 253; 
cout<<"cm"<<ch; 

To na pewno wydrukować cm .