CHR i ORD w C++


(Dybowski Filip) #1

Mama małe pytanko: Czy są odpowiedniki funkcji CHR i ORD w C++?

Z góry dzięki za pomoc.


(Sawyer47) #2

W C++ char jest typem wyliczeniowym - tak jak typy liczbowe, więc znaki są jakby swoim kodem. Wystarczy użyć rzutowania:

Liczby i znaki, mogą być też rzutowane miedzy sobą (nie)jawnie.

cout << "'2' + '2' = " << '2' + '2' << endl;

// 100

cout << "char('2' + '2') = " << char('2' + '2') << endl;

// d

cout << "c + 1 = " << 'c' + 1 << endl;

// 100

cout << "int(c + 1) = " << int('c' + 1) << endl;

// 100

cout << "char(c + 1) = " << char('c' + 1) << endl;

// d

Ale char i int to nie są funkcje wbudowane! To jest pewno notacja rzutowania. Takie coś tez jest możliwe:

cout << "'a' + 3.5 = " << 'a' + 3.5 << endl; // 100.5 - niejawne rzutowanie char na int: 'a' ==> 97

cout << "float('d') = " << float('d') << endl; //100.0

cout << "double('d' + 0.5) = " << double('d' + 0.5) << endl; //100.5

cout << "char('a' + 3.14) = " << char('a' + 3.14) << endl; // d

	// Inne formy rzutowania

cout << "(int)'d' = " << (int)'d' << endl; // 100

cout << "(int)('d' + 0.5) = " << (int)('d' + 0.5) << endl; //100 

cout << "static_cast('d') = " << static_cast('d') << endl; // 100

(Dybowski Filip) #3

Dzięki też już to znalazłem.