урок 35

Не забравяйте, че static_cast израз приема като вход. Ако ние използваме променлива в експресията - тази променлива се обработва за получаване на стойност, която след това се превръща в нов тип. Този процес на преобразуване не се отразява на самата променлива, с нейната стойност! В примера по-горе, променливата CH е променлива от тип овъгляване и има първоначалната си стойност (както е показано на последната линия на продукцията).

Също така в статично актьорския състав не е проверка на диапазона на стойностите, така че ако се опитате да използвате номера, които са твърде големи или твърде малки, за кабриолет тип, ще има преливане.

За повече информация за статично гласове ще бъде обсъдено в отделни класове.

Въвеждане на знаци

Следваща програмата пита потребителя дали иска да въведете символ. След това показва характер и неговата ASCII код:

"Това е цитиран текст"
Този низ съдържа една наклонена черта \
6F в шестнадесетичен е Чар "О"

Нов ред (\ Н) спрямо станд :: Endl. Какво да използвам?

Може би сте забелязали, че в последния пример, ние използвахме \ н за да преместите курсора на следващия ред. Но бихме могли да използваме станд :: Endl. Каква е разликата между тях? Сега ще разберем.

Когато използваме станд :: Cout, изхода за данни могат да бъдат буферирани, т.е., станд :: Cout не може да изпраща данни до заключение веднага. Вместо това, той може да ги оставям за известно време. Това се прави от съображения за ефективност.

И '\ Н "и станд :: Endl двете преместите курсора на следващия ред. В допълнение, станд :: Endl също така ще осигури оттеглянето на всички данни, които са на опашката, преди да продължите.

Така че, когато да се използва '\ Н ", а когато станд :: Endl? отговори на:

използване STD :: Endl. когато искате данните ви да бъдат показвани веднага (например при писане на запис във файл или да се актуализира прогрес бар). Имайте предвид, че тази опция може да доведе до лек спад в представянето си, особено ако записът на устройството е бавно (например файлове на записа на диск).

Използвайте '\ N' в други случаи.

Забележка: В нашите уроци, ние ще използваме '\ н "вместо STD :: Endl, тъй като за изход на конзолата - това е почти винаги най-добрият избор.

Какво ще кажете за други видове Чар: wchar_t, char16_t и char32_t?

wchar_t трябва да се избягва в почти всички случаи (с изключение, когато има взаимодействие с API за Windows). Нейният размер се определя в хода на изпълнение и не е надеждна. Този тип на мнозина, не без основание, не ми харесва.

Както и стандарта ASCII използва числа за да представляват английски букви, както и други стандарти за кодиране използват числа да представляват символи на други езици. Най-добре познат стандарт (след ASCII) - Unicode. в които повече от 110 000 числа, които да представляват символи на различни езици. Има следните начини за кодиране Unicode: UTF-32 - изисква 32 бита да представляват характер, UTF-16 - изисква 16 бита, UTF-8 - изисква 8 бита.

char16_t и char32_t се прибавят към C ++ 11 за подпомагане на 16-битови и 32-битови Unicode знака (8-битови символи и така поддържа тип овъгляване).

Каква е разликата между единични и двойни кавички, когато пишете символи?

Както вече знаете, героите са винаги поставени в единични кавички (например "а", "+", "5"). Чар тип променлива може да представлява само един символ (например писмо, символ +, броят 5). Нещо като това не е разрешено: