曲径通幽论坛

标题: Console::WriteLine 格式化输出 [打印本页]

作者: easy    时间: 2013-7-3 01:16
标题: Console::WriteLine 格式化输出
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;
}

输出:
a = 10 and b = 5.7
{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;
}

输出:
a = 10 and  b = 5.73
上面 {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;
}

输出:
[attach]1646[/attach]


下面给出了一些格式规范:
C 或 c  :把值作为货币量输出。
D 或 d :把整数作为十进制值输出。如果指定的精度大于位数,那么将在数字的左边填充 0 。
E 或 e :按照科学计数法输出浮点值,即利用指数。精度值表示在小数点后输出的位数。
F 或 f :把浮点值作为格式 (+-)ddddd.dd... 的定点数输出。
G 或 g :以最紧凑的格式输出值,这取决于值的类型和是否指定了精度。如果没有指定精度,那么使用默认的精度。
N 或 n :把值作为定点十进制值输出,必要时,将以每 3 位为一组并用逗号分隔开。
X 或 x :把整数作为十六进制值输出。根据是否指定 X 或 x,将输出十六进制数字的大写或小写形式。




欢迎光临 曲径通幽论坛 (http://www.groad.net/bbs/) Powered by Discuz! X3.2