Console::WriteLine() 中也有格式化输出,它的样式和 C 语言中的 printf() 的格式化输出类似,只不过形式上有些区别。比如下面:
[C++] 纯文本查看 复制代码 #include "stdafx.h"
using namespace System;
int main(array<System::String ^> ^args)
{
int a = 10;
float b = 5.7;
Console::WriteLine(L"a = {0} and b = {1}", a, b);
Console::ReadLine(); //等待用户输入回车后才往下走,这里阻止调试运行时窗口一闪而过。
return 0;
}
输出:{0} 和 {1} 分别对应着 a 和 b 这两个变量。Console::WriteLine() 的格式化输出格式为:Console::WriteLine("Format string", arg2, arg3, arg4, ...); 再看一个格式化实例:
[C++] 纯文本查看 复制代码 #include "stdafx.h"
using namespace System;
int main(array<System::String ^> ^args)
{
int a = 10;
float b = 5.734;
Console::WriteLine(L"a = {0} and b = {1:F2}", a, b);
Console::ReadLine();
return 0;
}
输出:上面 {1:F2} 中,冒号将标识要选择参数的索引值 1 和它的格式规范 F2 分开。F 标识采用 ddd.dd... 这样的形式(其中 d 代表一个数字),2 表示在小数点后面保留两位数字。
一般来说,可以编写格式为 {n,w:Axx} 的格式规范,其中 n 是参数索引;w 是一个可选的字段宽度规范;A 是一个字母,指定如何对值进行格式化;xx 是可选的一个或两个数字,指定值的精度。字段宽度规范是一个有符号整数。如果 w 为正数,则值在该字段中右对齐;如果 w 是负数,则左对齐。如果值占用的位置数小于 w 指定的位置数,那么输出将由空格填充;如果值需要的位置数大于 w 指定的位置数,那么宽度规范被忽略,比如:
[C++] 纯文本查看 复制代码 #include "stdafx.h"
using namespace System;
int main(array<System::String ^> ^args)
{
int a = 10;
float b = 5.7345;
Console::WriteLine(L"a = {0,5} and b = {1,5:F3}", a, b);
Console::ReadLine();
return 0;
}
输出:
下面给出了一些格式规范:
C 或 c :把值作为货币量输出。
D 或 d :把整数作为十进制值输出。如果指定的精度大于位数,那么将在数字的左边填充 0 。
E 或 e :按照科学计数法输出浮点值,即利用指数。精度值表示在小数点后输出的位数。
F 或 f :把浮点值作为格式 (+-)ddddd.dd... 的定点数输出。
G 或 g :以最紧凑的格式输出值,这取决于值的类型和是否指定了精度。如果没有指定精度,那么使用默认的精度。
N 或 n :把值作为定点十进制值输出,必要时,将以每 3 位为一组并用逗号分隔开。
X 或 x :把整数作为十六进制值输出。根据是否指定 X 或 x,将输出十六进制数字的大写或小写形式。 |