C++指定输入域宽

C++指定输入域宽之setw&width

本文所属图书 > C++程序设计教程(第2版)
cin与cout的功能虽然不同,但它们有许多类似点,如都可以指定域宽。cin的输入域宽可以使用操作符setw指定,也可使用cin.width函数成员指定。cin在读入一个字符串时,不能根据字符数组的长度自动读入字符,如果用户输入过多的字符,超过了字符数组的长度,cin会将多余字符存储到该数组的后面,这就有可能覆盖其他变量。如果我们为其指定了输入域宽,就可解决这一问题。

下面定义了一个长度为10的字符数组,采用setw规定cin读入的字符不能超过数组的有效范围:

char  word[10] ;
cin >> setw ( 10 ) >> word ;

同样也可以使用函数成员width指定输入域宽:

cin.width(10);
cin >> word ;

在上述两种情况下,指定的输入域宽都是10,cin将最多读取9个字符,因为数组最后一个位置存储字符’\0’。
下面的程序段说明了如何使用操作符setw和函数成员width:

char  word [5] ; 
cout << "请输入一个单词: " ;
cin >> setw(5) >> word ;
cout << "你输入的是:" << word << endl ;

运行结果:
请输入一个单词: Chinese [Enter]
你输入的是:Chin

也可以将上面的cin语句写成如下两行,结果完全相同:

cin.width(5);
cin  >> word ;

cin将只读取4个字符到字符数组。如果没有指定输入域宽,cin会读取整个字符串"Chinese",这将产生溢出。关于cin的输入域宽,还要注意以下3点:

1)域宽只对与其相邻的下一个输入有效。

2)当cin遇到空字符时,将停止读入,空字符包括回车、空格和Tab键。

3)当cin读取一定的字符后,多余的字符将留在缓冲区中。例如,在上面的程序段中,由于只读取了4个字符,那么留在缓冲区中的字符是"ese"。

  • 7
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值