C/C++中的输入输出操作(适用于OJ)

本文是笔者过在线评测时使用的输入输出操作总结。

正常输入输出

C语言中的 scanf, printf通常比较快。
scanf
printf
scanf("%d %d", &a, &b);
printf(“I am %d %s \n”, a, str);

字符串读入

(分割符:enter,space,tab)

  • cin:去掉前面的分割符;遇到分割符停止;保留后面的分割符
  • cin.get():读取一个任意字符(可以用来清分割符)
  • cin.get(str):无法去掉前面的enter符;遇到enter符停止;保留后面的enter符
    • 一般用cin.get(str)和cin.get()配合,确定分隔符都被清除掉了。
    • cin.get只能用于读取char数组,不能用来读取string,转换类型也不行。如果读取string,可以把缓冲区的字符按理想状态读掉,但是没法通过cout string显示
  • cin.getline():一切和cin.get()相同,但是丢弃后面的enter符。刚才对cin.get()说的所有东西都对cin.getline()适用。
  • getline可以用来读取string:getline(cin, str)
  • 不建议挑战cin.get和cin.getline参数中的长度限制,如果要卡长度请用数次cin.get(ch)
  • 其他操作均不推荐使用

解决方法(之一)

如果是这样的输入类型:

3
alice 1
bob 2
cindy 3

可以

cin >> num;
for(int i=0; i<num; i++){
    cin >> str[i] >> attr[i];
    cin.get();

整数格式化输出

printf("%06d", intNum):用0补齐6位

float/double格式化输出

1.printf("%3.0f",floatNum):不保留小数

说明:%3.0f表明待打印的浮点数(floatNum)至少占3个字符宽,且不带小数点和小数部分,整数部分至少占3个位宽;

注意:这里的3只代表整数部分至少占3位,舍弃小数点和小数点后面的部分

2.printf("%6.2f", floatNum):保留两位小数

说明:%6.2f 表明待打印的数(floatNum)至少占6个字符宽度(包括两位小数和一个小数点),且小数点后面有2位小数,小数点占一位,所以整数部分至少占3位。

参考

cin、cin.get()、getline()详解
C语言printf(""),浮点数打印保留有效位数,小数部分的四舍五入

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值