You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

cin.getline()读取字符数组时为何丢失最后一个字符?

关于cin.getline()读取字符数的问题解答

原因很简单:C风格的字符串必须以**空字符'\0'**作为结束标志,而cin.getline()的第二个参数指定的是「包括这个终止空字符在内的总字符数」。

看你的代码:

char st[5];
cin.getline(st,5);
cout<<st;

数组st总共只有5个存储位置。当你调用cin.getline(st,5)时,函数最多会读取4个输入字符,然后自动在第5个位置补上'\0'——这是为了让st成为合法的C风格字符串,能被cout正确识别输出。

所以当你输入"abcde"时,前4个字符"abcd"被存入数组,第5位是'\0',最后一个"e"自然就被截断了。

如果想完整读取"abcde"这5个可见字符,你需要把数组长度设为6(5个字符+1个终止符),同时调用cin.getline(st,6)才行。

内容的提问来源于stack exchange,提问作者Alex

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 03:42:02