曲径通幽论坛

 找回密码
 立即注册
搜索
查看: 4165|回复: 0
打印 上一主题 下一主题

[CLI] Console::WriteLine 格式化输出

[复制链接]

716

主题

734

帖子

2946

积分

超级版主

Rank: 9Rank: 9Rank: 9

积分
2946
跳转到指定楼层
楼主
发表于 2013-7-3 01:16:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
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;
}

输出:



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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|曲径通幽 ( 琼ICP备11001422号-1|公安备案:46900502000207 )

GMT+8, 2024-4-29 12:31 , Processed in 0.082825 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表