Специфікатор формату | Опис |
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.