Часто використовувані специфікатори формату

Специфікатор формату Опис
C або з Виводить значення в грошовому форматі.
dабо d Виводить ціле в десятковому виді. Якщо вказати більше високу точність, кількість десяткових знаків у числі, то воно буде доповнено нулями ліворуч.
Е або е Виводить значення із плаваючою крапкою в науковій нотації, тобто з експонентою. Значення точності вказує кількість десяткових розрядів після крапки.
F або f Виводить значення із плаваючою крапкою як число з фіксованою крапкою у формі ±ddd.dd...
G або g Виводить значення в найбільш компактному виді, залежно від його типу й зазначеної точності. Якщо точність не зазначена, приймається значення точності за замовчуванням.
N або п Виводить десяткове значення із плаваючою крапкою, використовуючи при необхідності роздільник - кому між групами по трьох розряду.
X або х Виводить ціле в шiстнадцятирiчному виді. Шiстнадцятирiчнiцифри виводяться у верхньому або нижньому регістрі залежно від того, зазначений X або х.

 

Взагалі можна писати специфікацію формату у вигляді {n, w:Ахх}, де n - значення індексу, що вказує номер аргументу, що випливає за форматним рядком, w- необов'язкова специфікація ширини поля, А- односимвольна специфікація формату значення, а хх- необов'язкове одне- або двозначне число, що задає точність висновку значення. Специфікація ширини поля - ціле зі знаком. Значення буде вирівняно вправо в поле w, якщо ширина позитивна, і вліво - якщо негативно. Якщо значення займає менше знаків, чим зазначене в w, то висновок доповнюється пробілами; якщо значення не міститься завширшки w, те специфікація ширини ігнорується. От ще один приклад:

Console::WriteLine(L"Пакетів:{0,3} Вага: {1,5:F2} фунтів.", packageCount, packageWeight);

Кількість пакетів виводиться в поле шириною 3 знаки, а вага - у поле шириною 5, тому в результаті одержимо:

Пакетів: 25 Вага: 7.50 фунтів.

Розглянемо ще один приклад найпростішої програми, що читає натискання клавіш і виводить інформацію на екран:

 

#include "stdafx.h"

using namespace System;

 

int main()

{

Console::WriteLine(L"Натисніть комбінацію клавіш — для виходу натисніть Esc");

ConsoleKeyInfo keyPress;

do

{

keyPress = Console::ReadKey(true);

Console::Write(L"Ви нажали");

if(safe_cast<int>(keyPress.Modifiers)>0)

Console::Write(L" {0},", keyPress.Modifiers);

Console::WriteLine (L" {0} що дає символ {1} ",

keyPress.Key, keyPress.KeyChar);

}while(keyPress.Key != ConsoleKey::Escape);

return 0;

}

 

У розглянутому прикладі використається операція safe_cast, що призначена для явних приведень типів у середовищі CLR. У більшості випадків ви можете без проблем використати static_cast для приведення одного типу до іншого в програмах C++/CLI, але оскільки є виключення, які приводять до повідомлень про помилки, краще все-таки використати saf ecast. Приведення safe_cast застосовується точно так само, як static_cast. Наприклад:

double valuel = 10.5; double value2 =15.5;

int whole_number = safe_cast<int>(valuel) + safe_cast<int>(value2);

Останній оператор приводить кожне зі значень типу double до типу int перед тим, як скласти їх і привласнити результат wholenumber.