今天开始肝c++了,啊这可是我几百年没碰过的玩意儿。之前一直在安卓上面搞来搞去,暑假到现在就一直写python。python给我的感觉就是相对于c++,一些代码没有那么又长又臭了,但是感觉那个运行速度有点低。然后开学了,还是得把c++学好才行啊。于是乎我就把

感觉c++的格式化输入输出和python的格式化输入输出很类似,在某些格式符的使用上还有正则表达式那种匹配的感觉,对于学过正则的同学来说,这个应该不难。

C++格式化输入输出用到的是cstdio中的scanf和printf函数,这对于我们从输入的数据中获取我们想要的信息很有帮助。(啊感觉这不就是对输入的信息进行了正则匹配吗?)输出的时候也可以用比较短的代码就能搞定,简直nice到不行。

记得初中信息学老师讲过,scanf和printf相较于cin、cout,在大量数据输出的时候好像比较占优势?(如果我没记错的话)

然后就讲下格式符的使用吧。

scanf函数

*格式符的使用

*格式符用来表示输入的量不赋值给一个变量

#include<cstdio>

int main()
{
	int a,b;
	scanf("%d%*d%d", &a,&b);
	printf("a=%d,b=%d\n", a, b);
}

在上面这个例子中,如果我们输入 1 2 3

那么执行结果将会是

a=1,b=3

域宽格式符的使用

域宽格式符指定了输入列所占的列宽,域宽是一个整数。

#include<cstdio>

int main()
{
	int a, b;
	scanf("%4d%4d", &a, &b);
	printf("a=%d,b=%d\n", a, b); 
}

当我们输入123456789时,就会有如下的输出:

a=1234,b=5678

%s格式符的使用

%s是匹配字符串的意思

#include<cstdio>
int main()
{
	char st[40];
	scanf("%s", st);
	printf("Your input is:%s\n", st);
}

当我们输入abc hello时,程序将会输出

Your input is:abc

我们发现,它并没有匹配hello,那么scanf的%s匹配应该是到空格就停止了。

非格式符的使用

其实我觉得格式化输入就是一个类似于正则匹配的东西,所以非格式符很自然就是作为一个简单的匹配条件罢了。

#include<cstdio>
int main()
{
	int a,b,c;
	scanf("%d,%d,%d",&a, &b, &c);
	printf("a=%d,b=%d,c=%d", a, b, c);
}//本例子中,应该以非格式字符','作为间隔符 

在这个例子之中,我们应该输入5,6,7

然后执行结果应该是

a=5,b=6,c=7

printf函数

这里就着重讲讲d、f、s格式符

d格式符的用法,举个例子看的很清楚。

%ld(小写字母l)用来输出长整型数据。

#include<cstdio>

int main()
{
	int i = 1;
	long j = 123;
	printf("%d,%2d,%03d,%ld,%-4ld,%05ld",i,i,i,j,j,j);
}

执行结果

1, 1,001,123,123 ,00123
参数说明
%f按实数格式输出,整数部分按实际位数输出,6位小数
%m.nf总位数m(含小数点),其中有n位小数
%-m.nf同上,左对齐
f格式符
参数说明
%s按实际宽度输出一个字符串
%msm指定宽度(不足时补空格,大于时按实际宽度输出)
%-ms左对齐,不足时右补空格
%m.ns输出占m个字符位置,其中字符数最多n个,左补空格
%-m.ns同上,右补空格
s格式符

你也可能喜欢

发表评论